From cef4f48960692e2343ef8bd07f30af0e35351168 Mon Sep 17 00:00:00 2001 From: Inaki Fernandez Date: Sun, 18 Apr 2021 20:25:12 +0200 Subject: [PATCH] Apr 18th --- docs/ChromeDevTools.md | 2 + docs/GoogleCloudPlatform.md | 40 +- docs/ansible.md | 9 + docs/api.md | 10 +- docs/aws.md | 68 +++- docs/azure.md | 38 +- docs/bigdata.md | 5 +- docs/caching.md | 1 + docs/chaos-engineering.md | 3 + docs/cheatsheets.md | 10 +- docs/cicd.md | 12 +- docs/cloud-arch-diagrams.md | 2 + docs/container-managers.md | 9 + docs/databases.md | 31 +- docs/demos.md | 56 ++- docs/devel-sites.md | 1 + docs/developerportals.md | 2 + docs/devops.md | 26 ++ docs/devsecops.md | 34 +- docs/docker.md | 17 + docs/elearning.md | 3 +- docs/faq.md | 16 +- docs/git.md | 37 +- docs/gitops.md | 11 + docs/golang.md | 5 + docs/helm.md | 8 + docs/ibm_cloud.md | 5 + docs/images/MicroservicesMaturityMatrix.jpg | Bin 0 -> 64451 bytes docs/index.md | 11 +- docs/introduction.md | 22 ++ docs/istio.md | 10 + docs/java_frameworks.md | 1 + docs/jenkins-alternatives.md | 5 + docs/jenkins.md | 14 + docs/kubernetes-alternatives.md | 5 + docs/kubernetes-client-libraries.md | 1 + docs/kubernetes.md | 366 +++++++++++++----- docs/kustomize.md | 4 +- docs/linux-dev-env.md | 1 + docs/linux.md | 25 +- docs/maven-gradle.md | 1 + docs/message-queue.md | 47 ++- docs/mlops.md | 6 + docs/monitoring.md | 52 ++- docs/nosql.md | 2 + docs/ocp4.md | 21 + docs/oraclecloud.md | 4 +- docs/other-awesome-lists.md | 19 + ...ormance-testing-with-jenkins-and-jmeter.md | 1 + docs/project-management-methodology.md | 2 + docs/project-management-tools.md | 8 + docs/pulumi.md | 5 +- docs/python.md | 23 +- docs/qa.md | 7 +- docs/rancher.md | 3 + docs/recruitment.md | 1 + docs/scaffolding.md | 5 +- docs/securityascode.md | 14 +- docs/selenium-appium-zephyr.md | 5 + docs/serverless.md | 10 + docs/servicemesh.md | 13 + docs/sonarqube.md | 5 +- docs/sre.md | 2 + docs/storage.md | 8 + docs/terraform.md | 77 +++- docs/visual-studio.md | 3 + docs/web-servers.md | 1 + docs/workfromhome.md | 1 + docs/yaml.md | 7 + mkdocs.yml | 5 +- 70 files changed, 1113 insertions(+), 171 deletions(-) create mode 100644 docs/images/MicroservicesMaturityMatrix.jpg diff --git a/docs/ChromeDevTools.md b/docs/ChromeDevTools.md index ee14e929..2b26194a 100644 --- a/docs/ChromeDevTools.md +++ b/docs/ChromeDevTools.md @@ -36,6 +36,7 @@ ### HTTP Status Codes - [wikipedia: List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) - [slideshare: Http Status Code Errors in SEO](http://www.slideshare.net/AdelaRoger/http-status-code-errors-in-seo) +- [http.cat 🌟](https://http.cat) ### HTTP/2 - [Wikipedia: HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) @@ -67,6 +68,7 @@ - [The State of Real-Time Web in 2016](https://banksco.de/p/state-of-realtime-web-2016.html) - [SPDY and WebSocket Support at Akamai](https://blogs.akamai.com/2012/07/spdy-and-websocket-support-at-akamai.html) - [spring.io: YMNNALFT: Websockets](https://spring.io/blog/2021/01/25/ymnnalft-websockets) Welcome to another installment of You May Not Need Another Library For That (YMNNALFT)! +- [blog.bitsrc.io: Deep Dive into WebSockets](https://blog.bitsrc.io/deep-dive-into-websockets-e6c4c7622423) Understand the important attributes of WebSockets that every developer should know ---
diff --git a/docs/GoogleCloudPlatform.md b/docs/GoogleCloudPlatform.md index 04145646..4b61d883 100644 --- a/docs/GoogleCloudPlatform.md +++ b/docs/GoogleCloudPlatform.md @@ -1,12 +1,15 @@ # Google Cloud Platform - [Introduction](#introduction) +- [Google Cloud](#google-cloud) - [GitHub](#github) - [Managing Cluster Level Configuration](#managing-cluster-level-configuration) - [Serverless](#serverless) +- [GKE Google Kubernetes Engine](#gke-google-kubernetes-engine) - [Anthos. Google's Hybrid And Multi-Cloud Platform](#anthos-googles-hybrid-and-multi-cloud-platform) - [Python](#python) - [Cloud Code](#cloud-code) - [Google Cloud Buildpacks](#google-cloud-buildpacks) +- [Cloud SQL](#cloud-sql) ## Introduction * [cloud.google.com](https://cloud.google.com) @@ -19,7 +22,15 @@ * [AWS and GCP comparison](https://cloud.google.com/docs/compare/aws) * [Mapping of AWS services to Google Cloud](https://gregsramblings.com/blog/compare-google-cloud-to-aws/) * [whizlabs.com: Introduction To Google Cloud Platform](https://www.whizlabs.com/blog/google-cloud-platform/) -* [New Cloud Shell Editor: Get your first cloud-native app running in minutes](https://cloud.google.com/blog/products/application-development/introducing-cloud-shell-editor) + +## Google Cloud +- [New Cloud Shell Editor: Get your first cloud-native app running in minutes](https://cloud.google.com/blog/products/application-development/introducing-cloud-shell-editor) +- [techradar.com: Google Cloud is making it easier for developers to smuggle ‘secrets’ in their code](https://www.techradar.com/news/google-cloud-is-making-it-easier-for-developers-to-smuggle-secrets-in-their-code) Google Cloud wants to make building secure applications simpler +- [venturebeat.com: Google Cloud announces Network Connectivity Center to simplify hybrid cloud management](https://venturebeat.com/2021/03/23/google-cloud-announces-network-connectivity-center-to-simplify-hybrid-cloud-management) +- [cloud.google.com: Demystifying Cloud Spanner multi-region configurations](https://cloud.google.com/blog/topics/developers-practitioners/demystifying-cloud-spanner-multi-region-configurations) Cloud Spanner remains unique as a managed relational database that scales across regions while maintaining strong consistency. How does the regional and multi-regional setup differ? +- [cloud.google.com: Compare AWS and Azure services to Google Cloud](https://cloud.google.com/free/docs/aws-azure-gcp-service-comparison) +- [thecloudgirl.dev: What is Google Cloud Load Balancing?](https://thecloudgirl.dev/CLB.html) +- [cloud.google.com: Secret Manager Best Practices](https://cloud.google.com/secret-manager/docs/best-practices) ## GitHub - [github.com/GoogleCloudPlatform](https://github.com/GoogleCloudPlatform) @@ -32,6 +43,24 @@ ## Serverless - [Cloud Functions, meet VPC functionality](https://cloud.google.com/blog/products/serverless/learn-how-to-use-advanced-vpc-functionality-with-your-cloud-functions) +## GKE Google Kubernetes Engine +- [Fetches all Primitive and Predefined GCP IAM Roles](https://github.com/darkbitio/gcp-iam-role-permissions) +- [Using new traffic control features in External HTTP(S) load balancer](https://cloudblog.withgoogle.com/products/networking/how-to-use-new-traffic-control-features-in-cloud-load-balancing/amp/) +- [Setting up NodeLocal DNSCache](https://cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache) +- [Looking ahead as GKE, the original managed Kubernetes, turns 5](https://cloudblog.withgoogle.com/products/containers-kubernetes/5-ways-google-cloud-is-making-gke-the-best-place-to-run-kubernetes/amp/) +- [blog.doit-intl.com: How to Set Up Multi-Cluster Load Balancing with GKE](https://blog.doit-intl.com/how-to-setup-multi-cluster-load-balancing-with-gke-4b407e1f3dff) +- [codeburst.io: Google Kubernetes Engine Logging by Example](https://codeburst.io/google-kubernetes-engine-logging-by-example-df6946dcba6b) +- [cloud.google.com: Discover and invoke services across clusters with GKE multi-cluster services](https://cloud.google.com/blog/products/containers-kubernetes/introducing-gke-multi-cluster-services) +- [Introducing GKE Autopilot: a revolution in managed Kubernetes 🌟](https://cloud.google.com/blog/products/containers-kubernetes/introducing-gke-autopilot) +* [techcrunch.com: Google Cloud puts its Kubernetes Engine on autopilot](https://techcrunch.com/2021/02/24/google-cloud-puts-its-kubernetes-engine-on-autopilot/) +* [zdnet.com: Google introduces GKE Autopilot for hands-off Kubernetes](https://www.zdnet.com/article/google-introduces-gke-autopilot-for-hands-off-kubernetes/) The new GKE Autopilot, generally available now, steps up the level of automation involved in Kubernetes management, down to eliminating all node management. +* [thenewstack.io: Google’s New ‘Autopilot’ for Kubernetes](https://thenewstack.io/googles-new-autopilot-for-kubernetes) +* [cloud.google.com: GKE Autopilot 🌟](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) +* [medium: How to provision Kubernetes Cluster in GCP Cloud (K8s)? 🌟](https://medium.com/avmconsulting-blog/kubernetes-google-kubernetes-engine-gke-99abf912f912) +* [youtube: GKE Autopilot - Fully Managed Kubernetes Service From Google 🌟](https://youtu.be/Zztufl4mFQ4) +* [insights.project-a.com: Using GitHub Actions to deploy to Kubernetes in GKE 🌟](https://insights.project-a.com/using-github-actions-to-deploy-to-kubernetes-122c653c0b09) +* [faun.pub: How to automate the setup of a Kubernetes cluster on GCP](https://faun.pub/how-to-automate-the-setup-of-a-kubernetes-cluster-on-gcp-e97918bf41de) Using Ansible to install, setup, and configure a Google Kubernetes Cluster (GKE) on Google Cloud Platform (GCP). + ## Anthos. Google's Hybrid And Multi-Cloud Platform - [Anthos 🌟](https://cloud.google.com/anthos/) - [Everything You Want To Know About Anthos - Google's Hybrid And Multi-Cloud Platform](https://www.forbes.com/sites/janakirammsv/2019/04/14/everything-you-want-to-know-about-anthos-googles-hybrid-and-multi-cloud-platform/) @@ -46,4 +75,11 @@ - [Cloud Code 🌟](https://cloud.google.com/code) Everything you need to write, debug, and deploy your cloud-native applications. ## Google Cloud Buildpacks -- [Google Cloud Buildpacks](https://github.com/GoogleCloudPlatform/buildpacks) \ No newline at end of file +- [Google Cloud Buildpacks](https://github.com/GoogleCloudPlatform/buildpacks) + +## Cloud SQL +- [Testing Cloud SQL failover: Where to begin](https://cloud.google.com/blog/topics/developers-practitioners/testing-cloud-sql-failover-where-begin) + +
+ +
\ No newline at end of file diff --git a/docs/ansible.md b/docs/ansible.md index 79e85e9e..392bcf09 100644 --- a/docs/ansible.md +++ b/docs/ansible.md @@ -62,6 +62,12 @@ * [ansible.com: Announcing the Community Ansible 3.0.0 Package 🌟](https://www.ansible.com/blog/announcing-the-community-ansible-3.0.0-package) * [toptechskills.com: Ansible Tutorials & Courses 🌟](https://www.toptechskills.com/ansible-tutorials-courses/) Ansible is an agentless infrastructure as code (IAC) tool that is super effective at configuring cloud and bare metal infrastructure. * [toptechskills.com: How to Speed Up Your Ansible Playbooks Over 600% 🌟](https://www.toptechskills.com/ansible-tutorials-courses/speed-up-ansible-playbooks-pipelining-mitogen/) +* [opensource.com: 5 everyday sysadmin tasks to automate with Ansible 🌟](https://opensource.com/article/21/3/ansible-sysadmin) Get more efficient and avoid errors by automating repeatable daily tasks with Ansible. +* [redhat.com: 8 steps to developing an Ansible role in Linux 🌟](https://www.redhat.com/sysadmin/developing-ansible-role) In this article, an existing Ansible playbook is used to deploy Vim and convert it to a role adding flexibility and reusability. +* [ansible.com: Ansible whitepaper](https://www.ansible.com/resources/whitepapers/ansible-in-depth) Download this paper for a deep dive into Ansible, an open source IT configuration management, deployment, and orchestration tool. +* [redhat.slides.com: Ansible 202 - Best Practices from the field](http://redhat.slides.com/jparrill/ansible-202/fullscreen?token=1hUEEPF4#/11/1) - [asciinema.org/~padajuan](https://asciinema.org/~padajuan) +* [redhat.com: How to use Ansible to send an email using Gmail](https://www.redhat.com/sysadmin/configure-gmail-using-ansible) +* [youtube.com: Ansible Tutorial Part 8 - Implementing Handlers and Handling Task Failures](https://www.youtube.com/watch?v=pJFZ5h9fT5o&ab_channel=InfraXpertzz) ## Red Hat Ansible Automation Platform - [redhat.com: Red Hat Ansible Automation Platform Enhancements and New Certified Ansible Content Collections Refine the Automation Experience to Drive Business Imperatives](https://www.redhat.com/en/about/press-releases/red-hat-ansible-automation-platform-enhancements-and-new-certified-ansible-content-collections-refine-automation-experience-drive-business-imperatives) Ready-to-use, curated automation for a wide range of platforms, public clouds, network and security technologies help organizations more easily get started with the latest trusted automation @@ -75,6 +81,9 @@ - [List of Red Hat Supported Maintained Ansible Collections 🌟](https://access.redhat.com/articles/4993781) - [ansible.com: Automating Red Hat Satellite with Ansible](https://www.ansible.com/blog/automating-red-hat-satellite-with-ansible) - [galaxy.ansible.com: letsencrypt](https://galaxy.ansible.com/t_systems_mms/letsencrypt) This collection contains a role for issuing ssl certificates from Let's Encrypt via dns or http-challenge +- [opensource.com: 5 tips for choosing an Ansible collection that's right for you](https://opensource.com/article/21/3/ansible-collections) Try these strategies to find and vet collections of Ansible plugins and modules before you install them. +- [ansible.com: Announcing the Red Hat Enterprise Linux Certified Ansible Collection 🌟](https://www.ansible.com/blog/announcing-the-red-hat-enterprise-linux-certified-ansible-collection) +- [youtube: Ansible Collections](https://www.youtube.com/watch?app=desktop&v=AXnDrGgLaF0&feature=share&ab_channel=RobertdeBock) ## Ansible Cheat Sheets * [Ansible Cheat Sheets](cheatsheets.md) diff --git a/docs/api.md b/docs/api.md index 8f852cfc..cdaa8c8f 100644 --- a/docs/api.md +++ b/docs/api.md @@ -13,6 +13,7 @@ - [Comparisons](#comparisons) - [SOAP vs REST](#soap-vs-rest) - [REST vs OpenAPI vs gRPC](#rest-vs-openapi-vs-grpc) + - [REST vs GraphQL vs gRPC](#rest-vs-graphql-vs-grpc) - [Tools](#tools) - [API Testing](#api-testing) - [GraphQL](#graphql) @@ -29,7 +30,10 @@ - [Youtube Playlist: Introduction to APIs](https://www.youtube.com/playlist?list=PLM-7VG-sgbtBBnWb2Jc5kufgtWYEmiMAw) - [Devdocs.io API Documentation 🌟](https://devdocs.io/) - [Dzone: 5 Tips for Better REST API Design](https://dzone.com/articles/my-5-tips-for-better-restapi-design) Good API design is difficult. Maintaining backwards compatibility, effectively testing, handling upgrades, etc. is hard to manage. Check out this guide for help! -* [thenewstack.io: 5 Ways to Succeed with an API Gateway](https://thenewstack.io/5-ways-to-succeed-with-an-api-gateway/) +- [thenewstack.io: 5 Ways to Succeed with an API Gateway](https://thenewstack.io/5-ways-to-succeed-with-an-api-gateway/) +- [redhat.com: An Architect's guide to APIs: SOAP, REST, GraphQL, and gRPC 🌟](https://www.redhat.com/architect/apis-soap-rest-graphql-grpc) There are many strategies for data exchange. Here's a primer on four essentials. +- [dev.to: Why RESTful API rules are not enough or good for you to design good apis?](https://dev.to/calidion/why-restful-api-rules-are-not-enough-or-good-for-you-to-design-good-apis-3530) +- [dzone: Why Is REST API Architecture Gaining Popularity in the Digital Industry? 🌟](https://dzone.com/articles/why-is-rest-api-architecture-gaining-popularity-in) ## Motivation - [APIs published, APIs consumed: mainstream enterprises increasingly behave like software vendors](https://www.zdnet.com/article/apis-published-apis-consumed-mainstream-enterprises-increasingly-behave-like-software-vendors/) Mainstream enterprises increasingly reach out to customers with APIs, digital services. Unlike software providers though, many still have mostly on-premises infrastructure. @@ -69,6 +73,7 @@ ### RPC API Protocol (Remote Procedure Call) - [wikipedia: RPC Remote Procedure Call](https://en.wikipedia.org/wiki/Remote_procedure_call) +- [open-rpc.org lightweight RPC framework 🌟](https://open-rpc.org/) It layers an interface description on top of JSON-RPC 2.0 and ships with a few tools to help you design, document, and test your APIs. #### gRPC - [gRPC](https://grpc.io/) @@ -92,6 +97,9 @@ - [REST vs. gRPC: Battle of the APIs](https://code.tutsplus.com/tutorials/rest-vs-grpc-battle-of-the-apis--cms-30711) - [Comparing OpenAPI With gRPC 🌟](https://dzone.com/articles/comparing-openapi-with-grpc) OpenAPI is a great choice due to its interoperability. On the other hand, gRPC offers a better performance. Luckily, you don't have to choose one or the other. +### REST vs GraphQL vs gRPC +- [danhacks.com: REST vs. GraphQL vs. gRPC](https://www.danhacks.com/software/grpc-rest-graphql.html) + ## Tools ### API Testing * [softwaretestingportal.com: API Testing, Key Terminologies and more...](http://www.softwaretestingportal.com/2020/03/31/api-testing/) diff --git a/docs/aws.md b/docs/aws.md index 184f4f24..67f9b7bd 100644 --- a/docs/aws.md +++ b/docs/aws.md @@ -9,6 +9,7 @@ - [Amazon Web Services](#amazon-web-services) - [Blogs](#blogs) - [AWS Free Resources](#aws-free-resources) +- [Introduction](#introduction) - [Books](#books) - [Training](#training) - [AWS Certification](#aws-certification) @@ -117,6 +118,10 @@ - [Spain](#spain) - [Scripts](#scripts) - [Development](#development) +- [Cloud Development Kit CDK](#cloud-development-kit-cdk) +- [AWS Secrets Manager](#aws-secrets-manager) +- [AWS Cloud Endure](#aws-cloud-endure) +- [AWS Patterns](#aws-patterns) - [Videos](#videos) @@ -147,12 +152,22 @@ - https://aws.amazon.com/blogs - https://www.slideshare.net/AmazonWebServices +## Introduction +- [dzone: AWS Basics 🌟](https://dzone.com/articles/aws-basics) +- [dzone: AWS Elastic Compute Cloud (EC2) Basics 🌟](https://dzone.com/articles/aws-elastic-compute-cloud-ec2-basics) We will learn about IP Addresses and also connect to public EC2 instances externally using SSH. Let's have a look at public and private IP behavior first. +- [dzone: AWS Basics: Bastion Hosts and NAT 🌟](https://dzone.com/articles/aws-basics-bastian-hosts-and-nat) In this post, we will set up Bastion Host and NAT instances in our VPC. We will learn why we need those and some of the options available to us. +- [acloudguru.com: The Cloud Dictionary of Pain: Five Of AWS’s Toughest Cloud Topics](https://acloudguru.com/blog/engineering/the-cloud-dictionary-of-pain-five-of-awss-toughest-cloud-topics) + ### Books - [gocloudarchitects.com: AWS Certified Solutions Architect Associate Exam Guide](https://www.gocloudarchitects.com/free-csa-a-ebook/) ## Training - [New digital course and lab: AWS Cloud Development Kit (CDK) Primer](https://aws.amazon.com/about-aws/whats-new/2021/01/new-digital-course-and-lab-aws-cloud-development-kit-cdk-primer/) - +- [acloudguru.com 🌟](https://acloudguru.com/) +- [twitch.tv/acloudguruofficial 🌟](https://www.twitch.tv/acloudguruofficial) +- [learn.cantrill.io 🌟](https://learn.cantrill.io/) + - [github.com/acantril/learn-cantrill-io-labs](https://github.com/acantril/learn-cantrill-io-labs) + - [linkedin.com/pulse: So, you think you're an associate level Solutions Architect?](https://www.linkedin.com/pulse/so-you-think-youre-associate-level-solutions-adrian-cantrill/) ## AWS Certification - [linkedin: Sharing My Top 10 resources to use while preparing for AWS Certification Exams](https://www.linkedin.com/pulse/sharing-my-top-10-resources-use-while-preparing-aws-exams-semaan/) @@ -169,6 +184,10 @@ - [May 2020: EC2 Price Reduction – For EC2 Instance Saving Plans and Standard Reserved Instances 🌟](https://aws.amazon.com/es/blogs/aws/ec2-price-reduction-for-ec2-instance-saving-plans-and-standard-reserved-instances/) - [ec2.shop: Compare AWS EC2 instance price from the CLI 🌟](https://ec2.shop/) - [infoq.com: AWS Launches Low-Cost Burstable T4g Instances Powered by AWS Graviton2](https://www.infoq.com/news/2020/09/aws-ec2-t4g-instances/) +- [freecodecamp.org: How to Optimize your AWS Cloud Architecture Costs 🌟](https://www.freecodecamp.org/news/cost-optimization-in-aws/) +- [aws.amazon.com: Amazon S3 Glacier Price Reduction](https://aws.amazon.com/es/blogs/aws/amazon-s3-glacier-price-reduction/) +- [infoq.com: AWS Announces Lower Cost Storage Classes for Amazon Elastic File System](https://www.infoq.com/news/2021/03/aws-efs-one-zone-storage-classes/) +- [dzone: Understanding AWS Costs 🌟](https://dzone.com/articles/understanding-aws-costs) In this article, I'll provide a comprehensive guide on how to understand your AWS costs and needs. ### AWS Calculator - [AWS Total Cost of Ownership (TCO) Calculators 🌟](https://aws.amazon.com/tco-calculator/) @@ -275,6 +294,12 @@ - [London Calling! An AWS Region is coming to the UK!](http://www.allthingsdistributed.com/2015/11/aws-announces-uk-region.html) - [New – Scheduled Reserved Instances](https://aws.amazon.com/blogs/aws/new-scheduled-reserved-instances/) - [AWS CloudShell - Command-Line Access to AWS Resources 🌟](https://aws.amazon.com/es/blogs/aws/aws-cloudshell-command-line-access-to-aws-resources/) +- [zdnet.com: AWS rolls out S3 Object Lambda to process data for multiple applications](https://www.zdnet.com/google-amp/article/aws-rolls-out-s3-object-lambda-to-process-data-for-multiple-applications/) The new capability allows you to share data across applications, without having to manage a proxy layer or create copies of the dataset. +- [github.com/hayao-k/cdk-ecr-image-scan-notify](https://github.com/hayao-k/cdk-ecr-image-scan-notify) +- [cloudonaut.io: Seamless EC2 monitoring with the Unified CloudWatch Agent](https://cloudonaut.io/seamless-ec2-monitoring-with-the-unified-cloudwatch-agent/) +- [amazon.com: Reduce Unwanted Traffic on Your Website with New AWS WAF Bot Control](https://aws.amazon.com/blogs/aws/reduce-unwanted-traffic-on-your-web-site-with-aws-bot-control/) +- [infoq.com: AWS Introduces EC2 Serial Console: Troubleshoot Boot and Networking Issues](https://www.infoq.com/news/2021/04/aws-ec2-serial-console/) + ## AWS Management Console - [Working with the AWS Management Console 🌟](http://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html) @@ -306,6 +331,8 @@ - [Creating a DB Instance Running the Oracle Database Engine](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateOracleInstance.html) In RDS, create Oracle Standard Edition 2 DB instances with the License Included model. - [Oracle Database on the AWS Cloud: Quick Start Reference Deployment](https://aws.amazon.com/about-aws/whats-new/2016/10/oracle-database-on-the-aws-cloud-quick-start-reference-deployment/) - [besanttechnologies.com: AWS – Relational Database Service](https://www.besanttechnologies.com/amazon-web-services-relational-database) +- [Introducing the Aurora Storage Engine](https://aws.amazon.com/blogs/database/introducing-the-aurora-storage-engine/) +- [dzone: AWS Relational Database Service (RDS): PostgreSQL in Cloud 🌟](https://dzone.com/articles/aws-relational-database-service-rds-postgresql-in) Today, we will go into details of Amazon RDS. We also set up a PostgreSQL instance using this service and connect to it using a tool Azure Data Studio. ### AWS DMS - [Amazon RDS for PostgreSQL Enhancements: Support for new minor versions, Logical Replication, and Amazon RDS PostgreSQL as a source for AWS DMS](https://aws.amazon.com/about-aws/whats-new/2016/09/amazon-rds-for-postgresql-enhancements-support-for-new-minor-versions-logical-replication-and-amazon-rds-postgresql-as-a-source-for-aws-dms/) @@ -361,6 +388,8 @@ - [AWS Networking for Developers](https://aws.amazon.com/es/blogs/apn/aws-networking-for-developers/) - [Elastic Network Adapter](https://aws.amazon.com/blogs/aws/elastic-network-adapter-high-performance-network-interface-for-amazon-ec2) - [AWS Cloud Networking – Zero to Hero 🌟](http://www.netdesignarena.com/index.php/2020/04/15/new-blog-series-aws-cloud-networking-zero-to-hero/) +- [cloudonaut.io: What Architects Need to Know About Networking on AWS 🌟](https://cloudonaut.io/what-architects-need-to-know-about-networking-on-aws/) +- [cloudonaut.io: Advanced AWS Networking: Pitfalls That You Should Avoid](https://cloudonaut.io/advanved-aws-networking-pitfalls-that-you-should-avoid/) ## AWS Route 53 - [How do I transfer a domain to AWS from another registrar?](https://aws.amazon.com/premiumsupport/knowledge-center/transfer-domain-to-aws/) @@ -368,6 +397,7 @@ ## AWS Elastic Load Balancing - [AWS Summit Series 2016 | London: Deep Dive on Elastic Load Balancing](https://www.youtube.com/watch?v=HinwLb2lpLQ) - [docs.aws.amazon.com: What Is Elastic Load Balancing?](http://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) +- [ably.com: Balancing act: the current limits of AWS network load balancers](https://ably.com/blog/limits-aws-network-load-balancers) ## AWS Application Load Balancer (ALB) - [Application Load Balancer 🌟](https://aws.amazon.com/elasticloadbalancing/applicationloadbalancer/) @@ -430,6 +460,7 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [awsfundamentals.blogspot.com: AWS Virtual Private Cloud - VPC 🌟](https://awsfundamentals.blogspot.com/2019/12/aws-vpc-fundamental.html) - [Reduce Cost and Increase Security with Amazon VPC Endpoints](https://aws.amazon.com/blogs/architecture/reduce-cost-and-increase-security-with-amazon-vpc-endpoints/) - [ealtili.medium.com: Deepdive to VPCs and Connections to VPC](https://ealtili.medium.com/deepdive-to-vpcs-and-connections-to-vpc-2de3fb164d7c) +- [Centralize access using VPC interface endpoints to access AWS services across multiple VPCs](https://aws.amazon.com/blogs/networking-and-content-delivery/centralize-access-using-vpc-interface-endpoints/) ### AWS Client VPN - [cloudonaut.io: AWS Client VPN: Connected with the Cloud](https://cloudonaut.io/aws-client-vpn-connected-with-the-cloud/) @@ -467,6 +498,8 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [aws.amazon.com: Operating Lambda: Understanding event-driven architecture – Part 1 🌟](https://aws.amazon.com/blogs/compute/operating-lambda-understanding-event-driven-architecture-part-1/) - [aws.amazon.com: Optimizing Lambda functions packaged as container images](https://aws.amazon.com/es/blogs/compute/optimizing-lambda-functions-packaged-as-container-images/) - [Security Overview of AWS Lambda 🌟](https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf) +- [cloudonaut.io: Serverless Hybrid Cloud: Accessing an API Gateway via VPN or Direct Connect](https://cloudonaut.io/serverless-hybrid-cloud-accessing-an-api-gateway-via-vpn-or-direct-connect/) +- [infoworld.com: Serverless computing with AWS Lambda, Part 1](https://www.infoworld.com/article/3210726/serverless-computing-with-aws-lambda.html) Get an overview of AWS Lambda's nanoservices architecture and execution model, then build your first Lambda function in Java ## AWS API Gateway - [alexdebrie.com: A Detailed Overview of AWS API Gateway 🌟](https://www.alexdebrie.com/posts/api-gateway-elements/) @@ -509,6 +542,7 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [Amazon Inspector Announces General Availability for Windows](https://aws.amazon.com/es/about-aws/whats-new/2016/08/amazon-inspector-announces-general-availability-for-windows/) - [encrypt and decrypt data: Importing Key Material in AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) Use your own encryption keys with AWS Key Management Service. - [Amazon s2n: AWS’s new Open Source implementation of the SSL/TLS network encryption protocols](http://blogs.aws.amazon.com/security/post/TxLEHNNDPUFDU9/Automated-Reasoning-and-Amazon-s2n) +- [dzone: 9 AWS Security Best Practices: Securing Your AWS Cloud 🌟](https://dzone.com/articles/9-aws-security-best-practices-securing-your-aws-cl) Working with Amazon facilities, it is necessary to implement AWS security best practices to ensure the safety of the data and the cloud. ### Policy as Code with AWS CDK and Open Policy Agent - [Realize Policy-as-Code with AWS Cloud Development Kit through Open Policy Agent 🌟🌟](https://aws.amazon.com/blogs/opensource/realize-policy-as-code-with-aws-cloud-development-kit-through-open-policy-agent/) @@ -523,6 +557,10 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [How to Use SAML to Automatically Direct Federated Users to a Specific AWS Management Console Page](http://blogs.aws.amazon.com/security/post/Tx2CGWIB8SBYW2J/How-to-Use-SAML-to-Automatically-Direct-Federated-Users-to-a-Specific-AWS-Manage) - [New IAMCTL tool compares multiple IAM roles and policies 🌟](https://aws.amazon.com/es/blogs/security/new-iamctl-tool-compares-multiple-iam-roles-and-policies/) - [Bring your own CLI to Session Manager with configurable shell profiles](https://aws.amazon.com/es/blogs/mt/bring-your-own-cli-session-manager-configurable-shell-profiles/) +- [keepler.io: Gestionando el control de accesos en nuestro data lake en AWS](https://keepler.io/2021/03/gestionando-el-control-de-accesos-en-nuestro-data-lake-en-aws/) +- [aws.amazon.com: IAM Access Analyzer now supports over 100 policy checks with actionable recommendations to help you author secure and functional policies](https://aws.amazon.com/about-aws/whats-new/2021/03/iam-access-analyzer-supports-over-100-policy-checks-with-actionable-recommendations/) +- [aws.amazon.com: IAM Access Analyzer Update – Policy Validation](https://aws.amazon.com/blogs/aws/iam-access-analyzer-update-policy-validation/) +- [netflixtechblog.com: ConsoleMe: A Central Control Plane for AWS Permissions and Access](https://netflixtechblog.com/consoleme-a-central-control-plane-for-aws-permissions-and-access-fd09afdd60a8) - [github.com/Netflix/consoleme](https://github.com/Netflix/consoleme) ### AWS Organizations - [Simplifying permissions management at scale using tags in AWS Organizations](https://aws.amazon.com/blogs/mt/simplifying-permissions-management-at-scale-using-tags-in-aws-organizations/) @@ -532,6 +570,7 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa ### AWS Firewalls - [doit-intl.com: AWS Firewalls 101: How and when to use each one 🌟](https://blog.doit-intl.com/aws-firewalls-101-how-and-when-to-use-each-one-d4ad8087a6b3) +- [Automatically block suspicious traffic with AWS Network Firewall and Amazon GuardDuty](https://aws.amazon.com/es/blogs/security/automatically-block-suspicious-traffic-with-aws-network-firewall-and-amazon-guardduty) ### AWS WAF Web Application Firewall - [AWS WAF - Web Application Firewall](https://aws.amazon.com/waf/) @@ -539,6 +578,7 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [How to Use AWS WAF to Block IP Addresses That Generate Bad Requests 🌟](http://blogs.aws.amazon.com/security/post/Tx223ZW25YRPRKV/How-to-Use-AWS-WAF-to-Block-IP-Addresses-That-Generate-Bad-Requests) - [How to Reduce Security Threats and Operating Costs Using AWS WAF and Amazon CloudFront](http://blogs.aws.amazon.com/security/post/Tx1G747SE1R2ZWE/How-to-Reduce-Security-Threats-and-Operating-Costs-Using-AWS-WAF-and-Amazon-Clou) - [AWS WAF sample rules](https://github.com/awslabs/aws-waf-sample) +- [medium: Blocking bots using AWS WAF](https://medium.com/cloud-techies/blocking-bots-using-aws-waf-d449e6d159ca) ### AWS Vault - [AWS Vault](https://github.com/99designs/aws-vault) is a tool to securely store and access AWS credentials in a development environment. @@ -581,8 +621,9 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa ## AWS Big Data - [aws.amazon.com/big-data 🌟](http://aws.amazon.com/big-data) - [blogs.aws.amazon.com/bigdata](http://blogs.aws.amazon.com/bigdata/) -- [Querying Amazon Kinesis Streams Directly with SQL and Spark Streaming](http://blogs.aws.amazon.com/bigdata/post/Tx3916WCIUPVA3T/Querying-Amazon-Kinesis-Streams-Directly-with-SQL-and-Spark-Stream +- [Querying Amazon Kinesis Streams Directly with SQL and Spark Streaming](https://aws.amazon.com/blogs/big-data/querying-amazon-kinesis-streams-directly-with-sql-and-spark-streaming/) - [Using Spark SQL for ETL](http://blogs.aws.amazon.com/bigdata/post/Tx2D93GZRHU3TES/Using-Spark-SQL-for-ETL) +- [whizlabs.com: AWS Kinesis vs Kafka Apache](https://www.whizlabs.com/blog/kinesis-vs-kafka/) ### AWS Data Lake - [Building a Data Lake on AWS](https://aws.amazon.com/big-data/data-lake-on-aws/) AWS provides a highly scalable, flexible, secure, and cost-effective solution for your organization to build a Data Lake – a data repository for both structured and unstructured data that is designed to be easily accessible for on-demand data analytics enabling you to answer questions as they arise. @@ -647,6 +688,9 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa - [Optimizing Your Kubernetes Clusters with Rancher and Amazon EKS 🌟](https://aws.amazon.com/blogs/apn/optimizing-your-kubernetes-clusters-with-rancher-and-amazon-eks/) - [clickittech.com: Amazon ECS vs EKS : The Best Container Orchestration Platform 🌟](https://www.clickittech.com/aws/amazon-ecs-vs-eks/) - [dev.to: Sharing secrets to ECS in an AWS multi-account architecture](https://dev.to/aws-builders/sharing-secrets-to-ecs-in-an-aws-multi-account-architecture-5h1i) +- [faun.pub: Upgrading and Scaling Kubernetes cluster in AWS](https://faun.pub/upgrading-and-scaling-kubernetes-cluster-in-aws-6971b3936465) +- [youtube/StackSimplify: Kubernetes Deployments on AWS EKS | Amazon Elastic Kubernetes Service | Amazon EKS 🌟](https://www.youtube.com/watch?v=vZK_W-fpft0&ab_channel=StackSimplify) +- [cloudify.co: Simplifying Hybrid Cloud Deployments With AWS EKS And Outpost](https://cloudify.co/blog/simplifying-hybrid-cloud-deployments-with-aws-eks-and-outpost) ## AWS App Mesh - [AWS App Mesh Workshop](https://www.appmeshworkshop.com/) @@ -698,6 +742,7 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa ## New Features - [thenewstack.io: HashiCorp Adds Consul and Vault to Cloud Platform for AWS](https://thenewstack.io/hashicorp-adds-consul-and-vault-to-cloud-platform-for-aws/) - [Amazon EKS clusters now support user authentication with OIDC compatible identity providers](https://aws.amazon.com/about-aws/whats-new/2021/02/amazon-eks-clusters-support-user-authentication-oidc-compatible-identity-providers/) +- [Amazon Managed Service for Grafana (AMG) preview updated with new capabilities](https://aws.amazon.com/blogs/mt/amazon-managed-service-for-grafana-amg-preview-updated-with-new-capabilities/) ## Superwerker - [superwerker](https://aws.amazon.com/quickstart/architecture/superwerker/ 🌟) Automates AWS Cloud deployments backed by decades of expertise and best practices @@ -727,6 +772,20 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa ## Development - [thenewstack.io: Remote Debugging in AWS: The Missing Link in Your Debugging Toolset](https://thenewstack.io/remote-debugging-in-aws-the-missing-link-in-your-debugging-toolset/) +## Cloud Development Kit CDK +- [CDK](https://aws.amazon.com/cdk/) +- [bbvanexttechnologies.com: Cómo definir infraestructura como código en AWS con CDK](https://www.bbvanexttechnologies.com/como-definir-infraestructura-como-codigo-en-aws-con-cdk/) + +## AWS Secrets Manager +- [How to replicate secrets in AWS Secrets Manager to multiple Regions](https://aws.amazon.com/blogs/security/how-to-replicate-secrets-aws-secrets-manager-multiple-regions/) +- [AWS Secrets Manager controller POC: an EKS operator for automatic rotation of secrets](https://aws.amazon.com/blogs/containers/aws-secrets-manager-controller-poc-an-eks-operator-for-automatic-rotation-of-secrets/) + +## AWS Cloud Endure +- [AWS Cloud Endure Migration 🌟](https://aws.amazon.com/cloudendure-migration/) + +## AWS Patterns +- [medium: Top 4 AWS Patterns of Highly Available API](https://medium.com/greenm/top-4-aws-patterns-of-highly-available-api-d34599bfbb96) We want to tell you about a few common patterns that can be used to build highly available APIs on top of AWS infrastructure. We will highlight each of them and briefly describe the pros and cons. + ## Videos
@@ -736,3 +795,8 @@ aws ec2 describe-instances --query 'Reservations[].Instances[].[Placement.Availa
[![aws responsability model](images/aws_shared_responsability_model.jpg)](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ + +
+ +
diff --git a/docs/azure.md b/docs/azure.md index 93188723..4feb7806 100644 --- a/docs/azure.md +++ b/docs/azure.md @@ -1,9 +1,17 @@ # Microsoft Azure +- [Azure](#azure) +- [Azure DevOps](#azure-devops) +- [Azure Bicep](#azure-bicep) +- [AKS Azure Kubernetes Service](#aks-azure-kubernetes-service) +- [Azure Red Hat OpenShift ARO](#azure-red-hat-openshift-aro) +- [Azure Traffic Manager](#azure-traffic-manager) +- [Azure OpenVPN](#azure-openvpn) +- [Azure Security](#azure-security) + +## Azure - [Microsoft Azure](https://azure.microsoft.com/) - [Microsoft Docs](https://docs.microsoft.com/) - [Azure Docs](https://docs.microsoft.com/azure) - -## Azure - [Introducing the third of three Microsoft Clouds: Azure](https://www.catapultsystems.com/blogs/introducing-the-third-of-three-microsoft-clouds-azure/). 4 major sections of the Cloud Models are: - On-Premises: As you start on the left in the traditional on-prem configuration you are responsible for all layers of IT from the networking stack all the way up to the applications which are being provided. You may also be responsible for the data center, power, Internet service, and other underlying aspects. - Infrastructure as a Service: In IaaS (Take & Bake) the cloud vendor is responsible for the stack from networking through virtualization and your IT team is responsible for the Operating System (OS) through the applications. Common uses of IaaS are testing environments, development environments or hosting of a website. @@ -12,6 +20,8 @@ - [medium: Scaling Applications in the Cloud](https://medium.com/faun/scaling-applications-in-the-cloud-52bb6dfbac4e) - [thenewstack.io: Azure Kubernetes Service Replaces Docker with containerd](https://thenewstack.io/azure-kubernetes-service-replaces-docker-with-containerd/) - [thomasmaurer.ch: Learn how to deploy and manage Azure resources with ARM templates](https://www.thomasmaurer.ch/2020/12/learn-how-to-deploy-and-manage-azure-resources-with-arm-templates/) +- [blog.sixeyed.com: You can't always have Kubernetes: running containers in Azure VM Scale Sets](https://blog.sixeyed.com/you-cant-always-have-kubernetes-running-containers-in-azure-vm-scale-sets/) +- [devblogs.microsoft.com: Deploy Spring Boot applications by leveraging enterprise best practices – Azure Spring Cloud Reference Architecture](https://devblogs.microsoft.com/java/deploy-spring-boot-applications-by-leveraging-enterprise-best-practices/) ## Azure DevOps - [Azure DevOps 🌟](https://azure.microsoft.com/services/devops/) @@ -21,12 +31,33 @@ - [medium: Azure DevOps HandBook !](https://medium.com/@arunksingh16/azure-devops-handbook-d6dcd82da1b7) - [Azure DevOps Tips: “Each” Loops](https://medium.com/@therealjordanlee/azure-devops-tips-each-loops-c082c692d025) - [cloudskills.io: Getting Started with Git and Azure DevOps: The Ultimate Guide 🌟](https://cloudskills.io/blog/git-azure-devops) +- [zartis.com: Simplify Your SDLC with Azure DevOps](https://www.zartis.com/simplify-your-sdlc-with-azure-devops/) +- [azurebrains.com: Despliega tu Azure Function App con Terraform y Azure DevOps 🌟](https://www.azurebrains.com/2021/03/25/despliega-azure-function-terraform-azuredevops/) +- [devblogs.microsoft.com: Controlling Release Pipelines with Gates and Azure Policy Compliance 🌟](https://devblogs.microsoft.com/devops/controlling-release-pipelines-with-gates-and-azure-policy-compliance/) +- [youtube: Azure DevOps Pipeline and Image Builder](https://www.youtube.com/watch?v=zL0eLEl2BxI&ab_channel=TravisRoberts) +- [dev.to: Setting up a CI-CD Pipeline Using Azure DevOps 🌟](https://dev.to/gbengelebs/setting-up-a-ci-cd-pipeline-using-azure-devops-4gb) + +## Azure Bicep +- [Bicep](https://github.com/Azure/bicep) Bicep is a Domain Specific Language (DSL) for deploying Azure resources declaratively. ## AKS Azure Kubernetes Service - [trstringer.com: Run Kubernetes Pods on Specific VM Types in AKS](https://trstringer.com/run-kubernetes-pods-on-vm-types/) - [docs.microsoft.com: AKS-managed Azure Active Directory integration](https://docs.microsoft.com/en-us/azure/aks/managed-aad) - [build5nines.com: Terraform: Create an AKS Cluster 🌟](https://build5nines.com/terraform-create-an-aks-cluster/) - [github.com: AKS: Use AAD identity for pods and make your SecOps happy](https://github.com/dfrappart/articles/blob/master/podidentityjourney.md) +- [docs.microsoft.com: Microservices architecture on Azure Kubernetes Service (AKS) 🌟](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks-microservices/aks-microservices) +- [techcommunity.microsoft.com: Containerize and migrate applications to AKS with the Azure Migrate’s new App Containerization tool](https://techcommunity.microsoft.com/t5/azure-migration/containerize-and-migrate-applications-to-aks-with-the-azure/ba-p/2178551) +- [mehmetozkaya.medium.com: Deploying .Net Microservices to Azure Kubernetes Services(AKS) and Automating with Azure DevOps](https://mehmetozkaya.medium.com/deploying-net-microservices-to-azure-kubernetes-services-aks-and-automating-with-azure-devops-c50bdd51b702) +- [faun.pub: How to implement Azure Kubernetes Service (AKS) in Cloud?](https://faun.pub/azure-kubernetes-service-aks-d1e71c7ecbe6) +- [adamrushuk.github.io: Increasing the volumeClaimTemplates Disk Size in a Statefulset on AKS](https://adamrushuk.github.io/increasing-the-volumeclaimtemplates-disk-size-in-a-statefulset-on-aks/) +- [nillsf.com: Running Windows containers on the Azure Kubernetes Service (AKS)](https://nillsf.com/index.php/2020/11/17/running-windows-containers-on-the-azure-kubernetes-service-aks) +- [itnext.io: Running Your Microservices Securely on AKS](https://itnext.io/running-your-microservices-securely-on-aks-417a110b2e76) +- [docs.microsoft.com: Create an HTTPS ingress controller on Azure Kubernetes Service (AKS)](https://docs.microsoft.com/en-us/azure/aks/ingress-tls) +- [blog.nillsf.com: Customize core dump in Azure Kubernetes](https://blog.nillsf.com/index.php/2020/12/06/customize-core-dump-in-azure-kubernetes/) + +## Azure Red Hat OpenShift ARO +- [ARO](https://www.openshift.com/products/azure-openshift) +- [aroworkshop.io 🌟](http://aroworkshop.io/) ## Azure Traffic Manager - [Azure Traffic Manager](https://docs.microsoft.com/azure/traffic-manager/) @@ -34,6 +65,9 @@ ## Azure OpenVPN - [Create an Azure Active Directory tenant for P2S OpenVPN protocol connections](https://docs.microsoft.com/azure/vpn-gateway/openvpn-azure-ad-tenant) +## Azure Security +- [techcommunity.microsoft.com: Security Control: Implement security best practices](https://techcommunity.microsoft.com/t5/azure-security-center/security-control-implement-security-best-practices/ba-p/2269914) +
[![pizza model](images/pizza-model-vert.jpeg)](https://www.catapultsystems.com/blogs/introducing-the-third-of-three-microsoft-clouds-azure/)
\ No newline at end of file diff --git a/docs/bigdata.md b/docs/bigdata.md index f3ee1276..fb474b6f 100644 --- a/docs/bigdata.md +++ b/docs/bigdata.md @@ -2,4 +2,7 @@ ## Apache Spark * [itnext.io: Migrating Apache Spark workloads from AWS EMR to Kubernetes](https://itnext.io/migrating-apache-spark-workloads-from-aws-emr-to-kubernetes-463742b49fda) -* [towardsdatascience.com: How to guide: Set up, Manage & Monitor Spark on Kubernetes](https://towardsdatascience.com/how-to-guide-set-up-manage-monitor-spark-on-kubernetes-with-code-examples-c5364ad3aba2) \ No newline at end of file +* [towardsdatascience.com: How to guide: Set up, Manage & Monitor Spark on Kubernetes](https://towardsdatascience.com/how-to-guide-set-up-manage-monitor-spark-on-kubernetes-with-code-examples-c5364ad3aba2) +* [tomlous.medium.com: CI/CD for Data Engineers. Reliably Deploying Scala Spark containers for Kubernetes with Github Actions](https://tomlous.medium.com/ci-cd-for-data-engineers-68b0fd915545) +* [datamechanics.co: Apache Spark 3.1 Release: Spark on Kubernetes is now Generally Available](https://www.datamechanics.co/blog-post/apache-spark-3-1-release-spark-on-kubernetes-is-now-ga) +* [dzone: un and Scale an Apache Spark Application on Kubernetes](https://dzone.com/articles/run-and-scale-an-apache-spark-application-on-kuber) Learn how to set up Apache Spark on IBM Cloud Kubernetes Service by pushing the Spark container images to IBM Cloud Container Registry. \ No newline at end of file diff --git a/docs/caching.md b/docs/caching.md index 4f1f28af..1db0a355 100644 --- a/docs/caching.md +++ b/docs/caching.md @@ -45,6 +45,7 @@ - [slideshare: Haproxy best practice](http://www.slideshare.net/haproxytech/haproxy-best-practice) - [slideshare: How To Set Up SQL Load Balancing with HAProxy](http://www.slideshare.net/Severalnines/severalnines-ha-proxyjul20143) - [slideshare: Performance Tuning of HAProxy for Database Load Balancing](http://www.slideshare.net/Severalnines/haproxy-mysql-slides) +- [haproxy.com: The HAProxy Enterprise WAF 🌟](https://www.haproxy.com/blog/the-haproxy-enterprise-waf/)
diff --git a/docs/chaos-engineering.md b/docs/chaos-engineering.md index 6fc4d28e..e422d4e0 100644 --- a/docs/chaos-engineering.md +++ b/docs/chaos-engineering.md @@ -13,6 +13,9 @@ * [pingcap.com: chaos-mesh-action: Integrate Chaos Engineering into Your CI](https://pingcap.com/blog/chaos-mesh-action-integrate-chaos-engineering-into-your-ci) * [openshift.com: Introduction to Kraken, a Chaos Tool for OpenShift/Kubernetes](https://www.openshift.com/blog/introduction-to-kraken-a-chaos-tool-for-openshift/kubernetes) * [thenewstack.io: Chaos Engineering Progressively Moves to Production](https://thenewstack.io/chaos-engineering-progressively-moves-to-production/) +* [blog.flant.com: Open Source solutions for chaos engineering in Kubernetes](https://blog.flant.com/chaos-engineering-in-kubernetes-open-source-tools/) +* [PowerfulSeal](https://github.com/powerfulseal/powerfulseal) injects failure into your Kubernetes clusters, so that you can detect problems as early as possible. It allows for writing scenarios describing complete chaos experiments. +* [devopscurry.com: How Chaos Engineering plays a vital role in devops success](https://devopscurry.com/how-chaos-engineering-plays-a-vital-role-in-devops-success) ## Chaos Engineering for serverless computing * [thenewstack.io: Breaking Serverless on Purpose with Chaos Engineering](https://thenewstack.io/breaking-serverless-on-purpose-with-chaos-engineering/) \ No newline at end of file diff --git a/docs/cheatsheets.md b/docs/cheatsheets.md index 2cf89335..4605d14c 100644 --- a/docs/cheatsheets.md +++ b/docs/cheatsheets.md @@ -38,6 +38,7 @@ - [MariaDB and mySQL](#mariadb-and-mysql) - [MongoDB](#mongodb) - [Go](#go) +- [NodeJS](#nodejs) ## Cheat Sheets * [wizardzines.com 🌟](https://wizardzines.com/) programming zines by Julia Evans @@ -97,6 +98,8 @@ * [github: K8s in 30 mins 🌟](https://github.com/r0hi7/k8s-In-30Mins) This is not a comprehensive guide to learn Kubernetes from scratch, rather this is just a small guide/cheat sheet to quickly setup and run applications with Kubernetes and deploy a very simple application on single workload VM. This repo can be served as quick learning manual to understand Kubernetes. * [kunchalavikram1427: kubernetes Public](https://github.com/kunchalavikram1427/Kubernetes_public) * [kunchalavikram1427: kubernetes Commands](https://github.com/kunchalavikram1427/Kubernetes_public/blob/master/Kubernetes_Commands.txt) +* [betterprogramming.pub: Awesome Kubernetes Command-Line Hacks](https://betterprogramming.pub/awesome-kubernetes-command-line-hacks-8bd3604e394f) Tips for you to kubectl like a pro +* [thechief.io: The Definitive Kubectl Cheat Sheet](https://thechief.io/c/editorial/definitive-kubectl-cheat-sheet/) ## Docker Cheat Sheets - [dockerlux.github.io: Docker Cheat Sheet](http://dockerlux.github.io/pdfcheat-sheet-v2.pdf) @@ -157,6 +160,7 @@ * [curl cheat sheet for Linux and Unix users](https://daniel.haxx.se/blog/wp-content/uploads/2020/01/sticker-cheat-sheet.png) * [NetworkManager CLI cheatsheet](https://github.com/neilhwatson/nustuff/blob/master/networking/nmcli.md) * [pixelbeat.org/cmdline](http://www.pixelbeat.org/cmdline.html) +* [opensource.com: Linux Parted cheat sheet](https://opensource.com/downloads/parted-cheat-sheet) ### SSH Cheat Sheets - [ssh cheat sheet](https://cheatsheet.dennyzhang.com/cheatsheet-ssh-a4) @@ -251,6 +255,7 @@ ## TypeScript - [React+TypeScript Cheatsheets](https://github.com/typescript-cheatsheets/react) +- [docs.microsoft.com: Build JavaScript applications using TypeScript](https://docs.microsoft.com/en-us/learn/paths/build-javascript-applications-typescript/) ## Jupyter - [opensource.com: JupyterLab cheat sheet](https://opensource.com/downloads/jupyterlab-cheat-sheet) @@ -268,4 +273,7 @@ - [devhints.io/go: Go cheatsheet](https://devhints.io/go) - [github.com: golang-cheat-sheet](https://github.com/a8m/golang-cheat-sheet) - [jimmysong.io/cheatsheets/go](https://jimmysong.io/cheatsheets/go) -- [simplecheatsheet.com/tag/golang-cheat-sheet](https://simplecheatsheet.com/tag/golang-cheat-sheet/) \ No newline at end of file +- [simplecheatsheet.com/tag/golang-cheat-sheet](https://simplecheatsheet.com/tag/golang-cheat-sheet/) + +## NodeJS +- [developers.redhat.com: Node.js Cheat Sheet](https://developers.redhat.com/cheat-sheets/nodejs-cheat-sheet) \ No newline at end of file diff --git a/docs/cicd.md b/docs/cicd.md index 91324fd0..d8407c77 100644 --- a/docs/cicd.md +++ b/docs/cicd.md @@ -7,6 +7,7 @@ - [CI/CD with OpenShift](#cicd-with-openshift) - [CI/CD with AWS](#cicd-with-aws) - [Reports on the Enterprise CI/CD Market](#reports-on-the-enterprise-cicd-market) +- [Tools](#tools) - [Awesome Lists](#awesome-lists) ## Introduction @@ -64,6 +65,10 @@ Here are some important things to consider while building a CI/CD pipeline: * [Top 5 CI/CD best practices for 2021 🌟](https://circleci.com/blog/top-5-ci-cd-best-practices/) * [harness.io: What is Continuous Integration? 🌟](https://harness.io/blog/continuous-integration/what-is-continuous-integration/) * [cd.foundation: 2021 Technology Trends and Predictions](https://cd.foundation/blog/2021/02/01/trends-that-will-define-ci-cd-in-2021/) +* [opsmx.com: What is a CI/CD Pipeline ?](https://www.opsmx.com/blog/what-is-a-ci-cd-pipeline) +* [continuousdelivery.com: Patterns 🌟](https://continuousdelivery.com/implementing/patterns/) +* [devops.com: 7 Popular Open Source CI/CD Tools](https://devops.com/7-popular-open-source-ci-cd-tools/) +* [testguild.com: Pipeline as Code with Mohamed Labouardy](https://testguild.com/podcast/automation/a345-mohamed/) ## Security in CI/CD * [CI Checks Are Not Enough: Combat Configuration Drift in Kubernetes Resources](https://thenewstack.io/ci-checks-are-not-enough-combat-configuration-drift-in-kubernetes-resources/) @@ -77,7 +82,8 @@ Here are some important things to consider while building a CI/CD pipeline: - [medium: Continuous Kubernetes blue-green deployments on Azure using Nginx, AppGateway or TrafficManager — part 2](https://medium.com/@denniszielke/continuous-kubernetes-blue-green-deployments-on-azure-using-nginx-appgateway-or-trafficmanager-4490bce29cb) - [gitconnected.com: Blue-Green with Canary Deployment — A Novel approach](https://levelup.gitconnected.com/blue-green-with-canary-deployment-a-novel-approach-2cee77ff564d) - [semaphoreci.com: Continuous Blue-Green Deployments With Kubernetes 🌟](https://semaphoreci.com/blog/continuous-blue-green-deployments-with-kubernetes) - +- [cd.foundation: Intro to Deployment Strategies: Blue-Green, Canary, and More 🌟](https://cd.foundation/blog/2021/03/24/intro-to-deployment-strategies-blue-green-canary-and-more) +- [opsmx.com: What is Blue Green Deployment ?](https://www.opsmx.com/blog/blue-green-deployment/)
[![deployment strategies](images/K8s_deployment_strategies.png)](https://blog.container-solutions.com/deployment-strategies) @@ -100,6 +106,10 @@ Here are some important things to consider while building a CI/CD pipeline: [![gigaom cicd radar](images/gigaom_cicd_radar.jpg)](https://jfrog.com/whitepaper/gigaom-radar-for-enterprise-ci-cd/) +## Tools +- [plutora.com: Artifacts management tools](https://www.plutora.com/ci-cd-tools/artifacts-management-tools) +- [cloudbees.com: Continuous Delivery Tools: The 5 You Absolutely Need to Know in 2021](https://www.cloudbees.com/blog/cicd-tools-to-know-2021) + ## Awesome Lists * [Awesome CI/CD 🌟](https://github.com/cicdops/awesome-ciandcd) diff --git a/docs/cloud-arch-diagrams.md b/docs/cloud-arch-diagrams.md index 58b1b462..ed3da9ea 100644 --- a/docs/cloud-arch-diagrams.md +++ b/docs/cloud-arch-diagrams.md @@ -8,6 +8,8 @@ - [draw.io](https://drawio-app.com/) - [Isoflow](https://isoflow.io) Infrastructure Diagrams - [acloudguru.com: The top cloud diagramming tools, ranked](https://acloudguru.com/blog/engineering/the-top-cloud-diagramming-tools-ranked) +- [redhat.com: 6 architectural diagramming tools for cloud infrastructure](https://www.redhat.com/architect/diagramming-tools-cloud-infrastructure) Communicating a vision for cloud computing requires meaningful diagrams of logical, physical, and every layer in between. Here are tools that will help make them. +- [autodraw.com](https://www.autodraw.com/) Fast drawing for everyone. AutoDraw pairs machine learning with drawings from talented artists to help you draw stuff fast. ## AWS - [AWS Architecture Icons](https://aws.amazon.com/architecture/icons/) The official AWS icon set for building architecture diagrams diff --git a/docs/container-managers.md b/docs/container-managers.md index 5a5214a7..749350b6 100644 --- a/docs/container-managers.md +++ b/docs/container-managers.md @@ -18,6 +18,7 @@ ## Introduction - [A Practical Introduction to Container Terminology](https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/) - [inovex.de: Welcome To The Container Jungle: Docker vs. containerd vs. Nabla vs. Kata vs. Firecracker and more! 🌟](https://www.inovex.de/blog/containers-docker-containerd-nabla-kata-firecracker/) +- [blog.alexellis.io: Building containers without Docker 🌟](https://blog.alexellis.io/building-containers-without-docker/) ## OCI Project - [OCI: Open Container Initiative](https://www.opencontainers.org/) @@ -61,6 +62,12 @@ - [fedoramagazine.org: Manage containers with Podman Compose](https://fedoramagazine.org/manage-containers-with-podman-compose/) - [medium: Podman: Getting Started](https://medium.com/javarevisited/podman-getting-started-e7fc06961994) - [oldgitops.medium.com: Setting up Podman on WSL2 in Windows 10 🌟](https://oldgitops.medium.com/setting-up-podman-on-wsl2-in-windows-10-be2991c2d443) +- [youtube: Podman in Podman (Running a container within a container)](https://www.youtube.com/watch?app=desktop&v=OcHRWaC5tvY&feature=youtu.be&ab_channel=RedHat) +- "Forget about Docker image updating hassle. Podman offers simple auto updating capabilities. It works with conjunction with systemd. Just add label "io.containers.autoupdate=image" and run podman auto-update in cron or with help of systemd.timer and be done with it" [puksiarz](https://twitter.com/puksiarz) +- [wbhegedus.me: Configuring Podman for WSL2 🌟](https://wbhegedus.me/running-podman-on-wsl2) +- [podman.io: Podman Release v3.1.0](https://podman.io/releases/2021/04/02/podman-release-v3.1.0.html) The new Podman release includes a number of exciting new features, including the podman secret command for managing secrets, support for a volume chown option to fix permissions automatically, improved support for volumes in podman generate kube, and over 60 bug fixes, many to the HTTP API. Read on for more details! +- [redhat.com: How to replace Docker with Podman on a Mac](https://www.redhat.com/sysadmin/replace-docker-podman-macos) Want to use Podman to work with containers? Here's what you need to know about Podman on a Mac. +- [redhat.com: Exploring the new Podman secret command 🌟](https://www.redhat.com/sysadmin/new-podman-secrets-command) Use the new podman secret command to secure sensitive data when working with containers. #### Containers In High Security Environments with Podman - [Build trusted pipelines/Guards with Podman containers](https://www.redhat.com/en/blog/using-container-technology-make-trusted-pipeline) Container technology makes develoment easier/cheaper & much more secure. SELinux,SECCOMP,Namespaces,Dropped Capabilities. @@ -71,6 +78,8 @@ - [What is Red Hat Universal Base Image?](https://developers.redhat.com/blog/2019/10/09/what-is-red-hat-universal-base-image/) - [RH Universal Base Image FAQ](https://developers.redhat.com/articles/ubi-faq/#resources) - [Red Hat Ecosystem Catalog](https://catalog.redhat.com/software/containers/explore) +- [ubi-micro: RHEL tiny images to build containers 🌟](https://github.com/fatherlinux/ubi-micro) +- [developers.redhat.com: How to pick the right container base image](https://developers.redhat.com/blog/2021/04/13/how-to-pick-the-right-container-base-image/) ## Container Tools - [Say “Hello” to Buildah, Podman, and Skopeo. New Generation of Container Management Tools](https://servicesblog.redhat.com/2019/10/09/say-hello-to-buildah-podman-and-skopeo/) diff --git a/docs/databases.md b/docs/databases.md index bc66922d..e038eef8 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -1,6 +1,8 @@ # Relational Databases on Kubernetes. Database DevOps - [Introduction](#introduction) - [Stateful and Stateless Applications](#stateful-and-stateless-applications) +- [Serverless Databases](#serverless-databases) +- [DataOps](#dataops) - [Databases on Kubernetes](#databases-on-kubernetes) - [Database DevOps](#database-devops) - [KubeDB Cloud Native Postgress Database](#kubedb-cloud-native-postgress-database) @@ -36,8 +38,10 @@ - [MariaDB](#mariadb) - [PostgreSQL](#postgresql) - [Percona MySQL](#percona-mysql) +- [Rockset](#rockset) - [Tools](#tools) - [Time-Series Database](#time-series-database) +- [Data Analytics and Visualization Tools](#data-analytics-and-visualization-tools) ## Introduction - [thenewstack.io: How Database Load Balancing Completes the 3-Tiered Architecture 🌟](https://thenewstack.io/database-load-balancing-and-the-delusion-of-3-tiered-architecture/) @@ -45,16 +49,26 @@ - [thenewstack.io: Just How Challenging Is State in Kubernetes? 🌟](https://thenewstack.io/just-how-challenging-is-state-in-kubernetes/) - [theregister.com: 75% of databases to be cloud-hosted by 2022, says Gartner while dishing on the weak points of each provider](https://www.theregister.com/2020/12/02/gartner_cloud_dbms/) - [thenewstack.io: What Is Data Management in the Kubernetes Age?](https://thenewstack.io/what-is-data-management-in-the-kubernetes-age/) +- [thenewstack.io: A Case for Databases on Kubernetes from a Former Skeptic](https://thenewstack.io/a-case-for-databases-on-kubernetes-from-a-former-skeptic/) +- [hackernoon.com: Database Vs Data Warehouse Vs Data Lake: A Simple Explanation](https://hackernoon.com/database-vs-data-warehouse-vs-data-lake-a-simple-explanation-hz2k33rm) +* [percona.com: DBaaS on Kubernetes: Under the Hood 🌟](https://www.percona.com/blog/2021/02/08/dbaas-on-kubernetes-under-the-hood/) ## Stateful and Stateless Applications * [xenonstack.com: Stateful and Stateless Applications Best Practices and Advantages](https://www.xenonstack.com/insights/stateful-and-stateless-applications/) * [threadreaderapp.com: Kelsey Hightower: "Kubernetes has made huge improvements in the ability to run stateful workloads including databases and message queues, but I still prefer not to run them on Kubernetes" 🌟](https://threadreaderapp.com/thread/963413508300812295.html) * [thenewstack.io: Data on Kubernetes: The Next Frontier](https://thenewstack.io/data-on-kubernetes-the-next-frontier/) “The interesting opportunity I see in the Kubernetes ecosystem,” Evenson continued, “is that, with the advent of custom resources and Kubernetes, you can build bespoke APIs for your application really easily. We’re in the world of operator explosion. In essence, it makes Kubernetes applications aware.” * [dzone: Kubernetes and Running Stateful Workloads 🌟](https://dzone.com/articles/kubernetes-and-running-stateful-workloads) * [towardsdatascience.com: Understanding the Relational Model of Database Management Systems 🌟](https://towardsdatascience.com/understanding-the-relational-model-of-database-management-systems-56f17db99f56) -* [openshift.com: OpenShift, Databases and You: When to Put Containerized Database Workloads on OpenShift 🌟](https://www.openshift.com/blog/openshift-databases-and-you-when-to-put-containerized-database-workloads-on-openshift) +* [openshift.com: OpenShift, Databases and You: When to Put Containerized Database Workloads on OpenShift 🌟](https://www.openshift.com/blog/openshift-databases-and-you-when-to-put-containerized-database-workloads-on-openshift) +* [sixfold.medium.com: Reducing database queries to a minimum with DataLoaders](https://sixfold.medium.com/reducing-database-queries-to-a-minimum-with-dataloaders-cc98c25e54ce) [![Statefull and Stateless Aplications](images/stateful-and-stateless-applications.png)](https://www.xenonstack.com/insights/stateful-and-stateless-applications/) +## Serverless Databases +- [thenewstack.io: How to Ensure Your Serverless Database Stays Serverless](https://thenewstack.io/how-to-ensure-your-serverless-database-stays-serverless/) + +## DataOps +- [dzone: 2021: The Year of DataOps](https://dzone.com/articles/2021-the-year-of-dataops) Centralizing an organization's data in a cloud data warehouse gives all stakeholders big-picture access to everything going on at the company. + ## Databases on Kubernetes * [cloud.google.com: To run or not to run a database on Kubernetes - What to consider](https://cloud.google.com/blog/products/databases/to-run-or-not-to-run-a-database-on-kubernetes-what-to-consider) * [reddit.com: What's the best, proper way of running a database cluster on top of Kubernetes?](https://www.reddit.com/r/kubernetes/comments/9d8on5/whats_the_best_proper_way_of_running_a_database/) @@ -131,7 +145,11 @@ * [info.crunchydata.com: Deploying the PostgreSQL Operator on GKE](https://info.crunchydata.com/blog/install-postgres-operator-kubernetes-on-gke-ansible) * [info.crunchydata.com: Using GitOps to Self-Manage Postgres in Kubernetes 🌟](https://info.crunchydata.com/blog/gitops-postgres-kubernetes) * [info.crunchydata.com: Kubernetes Pod Tolerations and Postgres Deployment Strategies](https://info.crunchydata.com/blog/kubernetes-pod-tolerations-and-postgresql-deployment-strategies) - +* [blog.crunchydata.com: Helm, GitOps and the Postgres Operator](https://blog.crunchydata.com/blog/gitops-postgres-kubernetes-helm) +* [blog.crunchydata.com: Crunchy Postgres Operator 4.6.0 🌟](https://blog.crunchydata.com/blog/crunchy-postgres-operator-4.6.0) +* [blog.crunchydata.com: Deploy PostgreSQL With TLS in Kubernetes](https://blog.crunchydata.com/blog/set-up-tls-for-postgresql-in-kubernetes) +* [blog.crunchydata.com: Announcing Google Cloud Storage (GCS) Support for pgBackRest](https://blog.crunchydata.com/blog/announcing-google-cloud-storage-gcs-support-for-pgbackrest) +* [youtube: Install and use Crunchy PostgreSQLfor OpenShift operator for simple todo app on OpenShift 🌟](https://www.youtube.com/watch?v=9wuUXi6Qbis&ab_channel=MichaelBornholdtNielsen) ### Crunchy Data Developer Portal - [Announcing the Crunchy Data Developer Portal](https://info.crunchydata.com/blog/announcing-the-crunchy-data-developer-portal) @@ -769,6 +787,7 @@ oc adm policy add-scc-to-user anyuid system:serviceaccount:pgophub:default ## MySQL - [twindb.com: Verify MySQL Backups With TwinDB Backup Tool](https://twindb.com/verify-mysql-backups-with-twindb-backup-tool/) - [blog.eduguru.in: mysql create index on table](https://blog.eduguru.in/mysql-2/mysql-create-index-on-table) +- [percona.com: MySQL 101: Parameters to Tune for MySQL Performance](https://www.percona.com/blog/2020/06/30/mysql-101-parameters-to-tune-for-mysql-performance/) ## MariaDB - [thenewstack.io: Maria DB Gets Reactive with a Non-Blocking Connector for Java](https://thenewstack.io/maria-db-gets-reactive-with-a-non-blocking-connector-for-java/) @@ -777,11 +796,16 @@ oc adm policy add-scc-to-user anyuid system:serviceaccount:pgophub:default - [momjian.us: Mastering PostgreSQL Administration [pdf] ](https://momjian.us/main/writings/pgsql/administration.pdf) - [9 High-Performance Tips when using PostgreSQL with JPA and Hibernate](https://vladmihalcea.com/9-postgresql-high-performance-performance-tips/) - [dzone: A Guide to SQL Triggers: Setting up Database Tracking in PostgreSQL](https://dzone.com/articles/a-guide-to-sql-triggers-setting-up-database-tracking-in-postgresql) SQL triggers are less common but can be a great solution for certain situations. I'll show how to use triggers in Postgres to enforce data integrity and track changes to a database. +- [migops.com: pgBackRest – The Best Postgres Backup Tool with a very active community](https://www.migops.com/blog/2021/04/09/pgbackrest-the-best-postgres-backup-tool-with-a-very-active-community/) ## Percona MySQL - [Percona.com: Percona Kubernetes Operator for Percona XtraDB Cluster](https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html) - [medium: Upgrading MySQL (Percona Server) from 5.7 to 8.0](https://medium.com/flant-com/upgrading-mysql-percona-server-5-to-8-4bce53bdce5c) - [percona.com: MySQL 101: How to Find and Tune a Slow SQL Query](https://www.percona.com/blog/2020/06/26/mysql-101-how-to-find-and-tune-a-slow-sql-query/) +- [percona.com: Storing Kubernetes Operator for Percona Server for MongoDB Secrets in Github](https://www.percona.com/blog/2021/03/22/storing-kubernetes-operator-for-percona-server-for-mongodb-secrets-in-github/) + +## Rockset +- [rockset.com: Sequoia Capital: Why We Moved from Elasticsearch to Rockset](https://rockset.com/blog/sequoia-capital-elasticsearch-to-rockset/) ## Tools - [SHMIG](https://github.com/mbucc/shmig) A database migration tool written in BASH consisting of just one file - shmig. @@ -789,6 +813,9 @@ oc adm policy add-scc-to-user anyuid system:serviceaccount:pgophub:default ## Time-Series Database - [thenewstack.io: You Don’t Need a Blockchain, You Need a Time-Series Database](https://thenewstack.io/you-dont-need-a-blockchain-you-need-a-time-series-database/) +## Data Analytics and Visualization Tools +- [opensource.com: Make your data boss-friendly with EDA - Enterprise Data Analytics](https://opensource.com/article/21/4/visualize-data-eda) - [EDA](https://eda.jortilles.com/en/jortilles-english/) +
diff --git a/docs/demos.md b/docs/demos.md index 48b2e8ac..4182dd3f 100644 --- a/docs/demos.md +++ b/docs/demos.md @@ -7,15 +7,19 @@ - [Ansible and Ansible Tower](#ansible-and-ansible-tower) - [GitOps](#gitops) - [Kubernetes Demos](#kubernetes-demos) + - [Postgres Operator](#postgres-operator) - [CI/CD with SpringBoot for Kubernetes](#cicd-with-springboot-for-kubernetes) - [Deploy a Spring Boot Application to Openshift with Spring Cloud Kubernetes and Fabric 8 Maven Plugin](#deploy-a-spring-boot-application-to-openshift-with-spring-cloud-kubernetes-and-fabric-8-maven-plugin) - [Spring Initializr and k8s Initializer](#spring-initializr-and-k8s-initializer) - [Kubernetes CKAD Example Exam Questions Practical Challenge Series](#kubernetes-ckad-example-exam-questions-practical-challenge-series) - [Istio Service Mesh](#istio-service-mesh) - [Envoy Service Mesh](#envoy-service-mesh) + - [Consul Service Mesh](#consul-service-mesh) - [Rancher](#rancher) - [GitOps Workflow with Flux](#gitops-workflow-with-flux) - [Amazon EKS. Deploy example microservices on EKS](#amazon-eks-deploy-example-microservices-on-eks) + - [Azure AKS](#azure-aks) + - [Google Kubernetes Engine GKE](#google-kubernetes-engine-gke) - [Environments to learn and practice Kubernetes security](#environments-to-learn-and-practice-kubernetes-security) - [Red Hat Demo Central](#red-hat-demo-central) - [Cloud Native Development Architectural Diagrams Demos](#cloud-native-development-architectural-diagrams-demos) @@ -68,6 +72,8 @@ - [GitHub Actions](#github-actions) - [RedHat GitHub Actions](#redhat-github-actions) - [Red Hat Process Automation Manager](#red-hat-process-automation-manager) +- [API Testing and Postman](#api-testing-and-postman) +- [Serverless](#serverless) ## DevOps Screencasts - [SysAdmin Casts 🌟](https://sysadmincasts.com/) @@ -89,6 +95,7 @@ * [yankils/Simple-DevOps-Project](https://github.com/yankils/Simple-DevOps-Project) * [Spring PetClinic Sample Application](#spring-petclinic-sample-application) By following this repository you can able to setup a DevOps CI/CD Pipeline using: git, Jenkins, Maven, Ansible, Docker & Kubernetes * [swissarmydevops.com](https://swissarmydevops.com/) +* [dev.to: Build a highly available Node.js application using Docker, NGINX and AWS ELB](https://dev.to/sowmenappd/build-a-highly-available-node-js-application-using-docker-nginx-and-aws-elb-3cjp) ### Container Tools - [dzone Avengers of the Container World, Episode 1: Podman Hands-On 🌟](https://dzone.com/articles/avengers-of-container-world-episode-1-podman-hands) CRI-O and Podman have been widely adapted by most of the modern container platforms. In this blog, we will deep-dive on Podman with a hands-on session. @@ -101,6 +108,9 @@ * [opensource.com: Build a Kubernetes Minecraft server with Ansible's Helm modules](https://opensource.com/article/20/10/kubernetes-minecraft-ansible) Deploy a Minecraft server into a Kubernetes cluster with Ansible's new collections. * [developers.redhat.com: Run your first Ansible Playbook (Katakoda)](https://developers.redhat.com/courses/ansible/getting-started) * [kubernetes-advocate.medium.com: Website Deployment to AWS with Ansible](https://kubernetes-advocate.medium.com/how-to-deploy-a-website-to-aws-with-ansible-e878a63dd93) +* [konstruktoid.medium.com: Running a NGINX container using rootless Docker with Ansible](https://konstruktoid.medium.com/running-a-nginx-container-using-rootless-docker-with-ansible-a2bfcedd3b07) +* [kmahi2600.medium.com: Launching A WordPress Application With MYSQL Database in K8S Cluster On AWS Using Ansible](https://kmahi2600.medium.com/launching-a-wordpress-application-with-mysql-database-in-k8s-cluster-on-aws-using-ansible-a78d6bf12b1a) +* [faun.pub: Automation: Deploying an app in GKE using Ansible](https://faun.pub/automation-deploying-an-app-in-gke-using-ansible-4b6687967ac3) Ansible infrastructure-as-code to automate Nginx deployment in Google Kubernetes Cluster (GKE) on Google Cloud Platform (GCP). ### GitOps - [thenewstack.io: GitOps in Multicluster Environments with Anthos Config Management](https://thenewstack.io/tutorial-gitops-in-multicluster-environments-with-anthos-config-management/) @@ -132,6 +142,7 @@ * [Free Kubernetes 🌟🌟](https://github.com/learnk8s/free-kubernetes/) List of free Trials/Credit for Managed Kubernetes Services. * [medium: Kubernetes in a nutshell — tutorial for beginners 🌟🌟](https://medium.com/swlh/kubernetes-in-a-nutshell-tutorial-for-beginners-caa442dfd6c0) Deploy a complete application stack just in a few steps! * [shipa.io: Developing and deploying applications to Kubernetes locally with Shipa and Minikube](https://www.shipa.io/development/deploying-applications-on-kubernetes/) +* [shipa.io: GitOps in Kubernetes, the easy way–with GitHub Actions and Shipa](https://www.shipa.io/development/gitops/) * [kruyt.org: Running a mailserver in Kubernetes](https://kruyt.org/running-a-mailserver-in-kubernetes/) * [piotrminkowski.com: RabbitMQ Monitoring on Kubernetes](https://piotrminkowski.com/2020/09/29/rabbitmq-monitoring-on-kubernetes/?utm_sq=gl0f6vph5e) * [dzone: Bootstrapping Java Kubernetes Apps With Spring Initializr and K8s Initializer 🌟](https://dzone.com/articles/bootstrapping-java-kubernetes-apps-no-yaml) Build a Spring Boot app and deploy to K8s without writing a single line of YAML. @@ -139,6 +150,12 @@ * [myweblearner.com: Kubernetes(k8s) Readiness and Liveness Probe](https://myweblearner.com/springboot_k8s_readiness_liveness.html) * [medium.com: Attacking Kubernetes clusters using the Kubelet API](https://medium.com/faun/attacking-kubernetes-clusters-using-the-kubelet-api-abafc36126ca) Knock-knockin’ on kubelet’s door. From the doormat to full node access. * [nfrankel/jvm-controller](https://github.com/nfrankel/jvm-controller) Example on how to write a kubernetes controller in Java. The demo code for nfrankel's talk on Kubernetes operators in Java. +* [matthewpalmer.net: Kubernetes Ingress with Nginx Example 🌟](https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ingress-guide-nginx-example.html) +* [digitalocean.com: How To Deploy a Scalable and Secure Django Application with Kubernetes](https://www.digitalocean.com/community/tutorials/how-to-deploy-a-scalable-and-secure-django-application-with-kubernetes) +* [developers.redhat.com: Deploying Node.js applications to Kubernetes with Nodeshift and Minikube](https://developers.redhat.com/blog/2021/03/09/deploying-node-js-applications-to-kubernetes-with-nodeshift-and-minikube/) + +### Postgres Operator +- [blog.flant.com: Our experience with Postgres Operator for Kubernetes by Zalando](https://blog.flant.com/our-experience-with-postgres-operator-for-kubernetes-by-zalando/) ### CI/CD with SpringBoot for Kubernetes * [CI/CD for Kubernetes through a Spring Boot example (Banzai Cloud CI/CD)](https://teletype.in/@sravancynixit/CcwqFANxY) @@ -166,12 +183,21 @@ ### Envoy Service Mesh - [loginradius.com: Service Mesh with Envoy](https://www.loginradius.com/blog/async/service-mesh-with-envoy/) This post will cover a working setup of a service mesh architecture using Envoy using a demo application. You will be using Envoy proxy for both control and data plane. +### Consul Service Mesh +- [medium: Consul-Kubernetes Ingress Gateways and L7 Traffic Management](https://medium.com/hashicorp-engineering/consul-kubernetes-ingress-gateways-and-l7-traffic-management-178957dcd934) + - [github: Andrew-Klaas/hashi-k8s-demo](https://github.com/Andrew-Klaas/hashi-k8s-demo) +- [medium: Kittens-as-a-Service: Layer 7 Traffic Management & Security with Consul Connect](https://medium.com/hashicorp-engineering/kittens-as-a-service-layer-7-traffic-management-security-with-consul-connect-f5965fac5aa) +- [learn.hashicorp.com: Consul Service Discovery and Mesh on Minikube 🌟](https://learn.hashicorp.com/tutorials/consul/kubernetes-minikube?in=consul/kubernetes) +- [consul.io: Ingress Gateways on Kubernetes 🌟](https://www.consul.io/docs/k8s/connect/ingress-gateways) + ### Rancher - [Deploy a Rancher Cluster with GitLab CI and Terraform](https://rancher.com/blog/2020/deploy-with-gitlab-ci) - [cncf.io: Implementing GitOps on Kubernetes Using K3s, Rancher, Vault and Argo CD](https://www.cncf.io/blog/2020/11/12/implementing-gitops-on-kubernetes-using-k3s-rancher-vault-and-argo-cd/) +- [stackrox.com: Part 1 - Rancher Kubernetes Engine (RKE) Security Best Practices for Cluster Setup 🌟](https://www.stackrox.com/post/2021/01/part-1-rancher-kubernetes-engine-rke-security-best-practices-for-cluster-setup) ### GitOps Workflow with Flux - [managedkube.com: A Complete Step by Step Guide to Implementing a GitOps Workflow with Flux](https://managedkube.com/gitops/flux/weaveworks/guide/tutorial/2020/05/01/a-complete-step-by-step-guide-to-implementing-a-gitops-workflow-with-flux.html) +- [youtube: GitOps Guide to the Galaxy (Ep 12): Flux On OpenShift](https://www.youtube.com/watch?v=W_rcYPZkhFg&ab_channel=RedHat) ### Amazon EKS. Deploy example microservices on EKS * [eksworkshop.com](https://eksworkshop.com/ ) @@ -183,6 +209,14 @@ * [dzone: deploying a kubernetes cluster with amazon eks 🌟](https://dzone.com/articles/deploying-a-kubernetes-cluster-with-amazon-eks) * [stacksimplify.com: DevOps with AWS CodePipeline on AWS EKS](https://www.stacksimplify.com/aws-eks/aws-devops-eks/learn-to-master-devops-on-aws-eks-using-aws-codecommit-codebuild-codepipeline/) * [medium: AWS App Mesh with EKS and Canary deployment](https://medium.com/@anupam.s1602/aws-app-mesh-with-eks-and-canary-deployment-5503d9ba95d6) +* [github.com/stacksimplify/aws-eks-kubernetes-masterclass 🌟](https://github.com/stacksimplify/aws-eks-kubernetes-masterclass) + +### Azure AKS +* [github.com/stacksimplify/azure-aks-kubernetes-masterclass 🌟](https://github.com/stacksimplify/azure-aks-kubernetes-masterclass) +* [channel9.msdn.com: Troubleshoot AKS cluster issues with AKS Diagnostics and AKS Periscope](https://channel9.msdn.com/Shows/Azure-Friday/Troubleshoot-AKS-cluster-issues-with-AKS-Diagnostics-and-AKS-Periscope) + +### Google Kubernetes Engine GKE +- [cloud.google.com: Troubleshooting services on Google Kubernetes Engine by example 🌟](https://cloud.google.com/blog/products/operations/troubleshooting-services-on-google-kubernetes-engine) ### Environments to learn and practice Kubernetes security - [The Kubernetes Goat](https://github.com/madhuakula/kubernetes-goat) designed to be intentionally vulnerable cluster environment to learn and practice Kubernetes security. @@ -227,6 +261,8 @@ * [opensource.com: Set up Minishift and run Jenkins on Linux](https://opensource.com/article/20/11/minishift-linux) Install, configure, and use Minishift to create your first pipeline. * [dzone: CodeReady Containers - Exploring a home loan mortgage process](https://dzone.com/articles/codeready-containers-exploring-a-home-loan-mortgag) As a cloud-native developer you've installed an OpenShift Container Platform development environment on your local machine, but what's next... * [Rcarrata's blog](https://rcarrata.com/) +* [JBoss Web Server Operator 🌟](https://access.redhat.com/documentation/en-us/red_hat_jboss_web_server/5.4/html-single/red_hat_jboss_web_server_for_openshift/index#jws_operator) Did you know that you can run Tomcat in Containers on Kubernetes in a easy supported manner? Take a look at the JBoss Web Server (a.k.a. @RedHat 's build of Tomcat) Operator for OpenShift +* [developers.redhat.com: Containerize and deploy Strapi CMS applications on Kubernetes and Red Hat OpenShift](https://developers.redhat.com/blog/2021/04/09/containerize-and-deploy-strapi-applications-on-kubernetes-and-red-hat-openshift/?sc_cid=7013a0000026GuZAAU) ### Developer Sandbox * [Developer Sandbox for Red Hat OpenShift 🌟](https://developers.redhat.com/developer-sandbox) Get free access to the Developer Sandbox for Red Hat OpenShift and deploy your application code as a container on this self-service, cloud-hosted experience. Skip installations and deployment and jump directly into OpenShift. @@ -251,6 +287,8 @@ - [alesnosek.com: CI/CD Pipeline Spanning Multiple OpenShift Clusters (jenkins & tekton)](http://alesnosek.com/blog/2020/06/30/ci-slash-cd-pipeline-spanning-multiple-openshift-clusters/) - [openshift.com: Guide to OpenShift Pipelines Part 1 - Introducing OpenShift Pipelines](https://www.openshift.com/blog/guide-to-openshift-pipelines-part-1-introducing-openshift-pipelines) - [kailashyogeshwar.medium.com: How we implemented Reusable CI/CD Pipeline using Git and Tekton](https://kailashyogeshwar.medium.com/how-we-implemented-reusable-ci-cd-pipeline-using-git-and-tekton-503bed91975b) +- [openshift.com: GitOps Using Red Hat OpenShift Pipelines (Tekton) and Red Hat Advanced Cluster Management to Deploy on Multiple Clusters 🌟](https://www.openshift.com/blog/gitops-using-red-hat-openshift-pipelines-tekton-and-red-hat-advanced-cluster-management-to-deploy-on-multiple-clusters) +- [developers.redhat.com: Getting started with Tekton and Pipelines](https://developers.redhat.com/blog/2021/01/13/getting-started-with-tekton-and-pipelines/) ### ArgoCD - [rromannissen/rhoar-microservices-demo: GitOps for Microservices with Red Hat Runtimes demo](https://github.com/rromannissen/rhoar-microservices-demo) A GitOps pipeline example using ArgoCD, tektoncd and HelmPack for springboot and QuarkusIO microservices. @@ -262,7 +300,7 @@ - [developers.redhat.com: Introduction to Tekton and Argo CD for multicluster development](https://developers.redhat.com/blog/2020/09/03/introduction-to-tekton-and-argo-cd-for-multicluster-development/) - [itnext.io: Solving ArgoCD Secret Management with the argocd-vault-plugin 🌟](https://itnext.io/argocd-secret-management-with-argocd-vault-plugin-539f104aff05) - [youtube: Exploring The Cloud-native Kubernetes CI/CD Pipeline Tool Landscape](https://www.youtube.com/watch?v=5XWwjyikWMQ&feature=emb_logo&ab_channel=Konveyor) In this meetup, we explore the new era of Kubernetes continuous integration continuous deployment pipelines based on a set of fancy tools as Tekton Pipelines, ArgoCD or Helm. We walk through the new DevOps and GitOps technologies landscape and a real demonstration of how these tools work together in order to make developers and system administrators lives easier. [repo1](https://github.com/acidonper/jump-app-gitops) , [repo2](https://github.com/acidonper/jump-app-docs) , [slides](https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbTVoMnVrcVR5Tjl0dlBGWkx2UTZzMHA3N1N3QXxBQ3Jtc0tsZkZrcUpfSzhBX1EzdUtOanRqV3o2WDZpdkhPY0NyODhmbERSQUhROFRPa2pZRC13Q3l0ekQ2MjR1LTIyY254VmhwdHVack1XeDJiRWVBMUl6U3RDRHo3cF9XVDVJRTluLWJFVXNYUjF5OFV4ZlN5SQ&q=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F14fSLwfEVpDU-3udMGEW9bQATCAOy0F8b6UOgNgDkD3A%2Fedit%3Fusp%3Dsharing) - +- [blog.argoproj.io: Introducing the ApplicationSet Controller for Argo CD](https://blog.argoproj.io/introducing-the-applicationset-controller-for-argo-cd-982e28b62dc5) ### GitLab Pipelines on OpenShift - [openshift.com: Building GitLab Pipelines on OpenShift](https://www.openshift.com/blog/building-openshift-pipelines-with-gitlab) @@ -284,10 +322,12 @@ - [openshift.com: Applications Here, Applications There! - Part 3 - Application Migration](https://www.openshift.com/blog/applications-here-applications-there-part-3-application-migration) - [Advanced Cluster Management Demos](https://www.youtube.com/playlist?list=PLbMP1JcGBmSFA56rykbH2fg1F9Tozk4of) Want to manage Kubernetes clusters at scale? Struggle with Application Lifecycle? Need to ensure Security and Compliance policies across clusters? Check out these demos of Red Hat Advanced Cluster Manager (RHACM). - [redhat.com: ACM Ansible Integration Overview](https://www.redhat.com/en/about/videos/acm-ansible-integration-overview) +- [opensift.com: K8s Integrity Shield (tech-preview): Protecting the Integrity of Kubernetes Resources with Signature](https://www.openshift.com/blog/k8s-integrity-shield-tech-preview-protecting-the-integrity-of-kubernetes-resources-with-signature) ### OKD * [medium.com: Installing an OKD 4.5 Cluster](https://medium.com/@craig_robinson/guide-installing-an-okd-4-5-cluster-508a2631cbee) * [itnext.io: Guide: Installing an OKD 4.5 Cluster](https://itnext.io/guide-installing-an-okd-4-5-cluster-508a2631cbee) +* [openshift.com: Recap: OKD 4 Testing and Deployment Workshop - Videos and Additional Resources](https://www.openshift.com/blog/recap-okd-4-testing-and-deployment-workshop-videos-and-additional-resources?utm_source=thenewstack&utm_medium=twitter&utm_campaign=platform) ### Helm 3 on OpenShift - [Katacoda Lab: Getting Started with Helm 3 on OpenShift](https://learn.openshift.com/developing-on-openshift/helm/) @@ -321,6 +361,7 @@ * [piotrminkowski.com: Continuous Integration with Jenkins on Kubernetes 🌟](https://piotrminkowski.com/2020/11/10/continuous-integration-with-jenkins-on-kubernetes/) * [youtube: Simple DevOps Project | Publish Android APK to App Center | Beginner Pipeline](https://www.youtube.com/watch?v=KgH0QzMHXLs) * [blog.flant.com: Configuring Continuous Integration for Jenkins & Bitbucket using werf](https://blog.flant.com/configuring-continuous-integration-for-jenkins-bitbucket-using-werf/) +* [lambdatest.com: Comprehensive Guide To Jenkins Declarative Pipeline [With Examples] 🌟](https://www.lambdatest.com/blog/jenkins-declarative-pipeline-examples/) ### Jenkins Declarative Pipelines with OpenShift * [github.com/openshift: Using Jenkins Declarative Pipelines with OpenShift 🌟](https://github.com/openshift/origin/tree/master/examples/jenkins/pipeline) @@ -403,6 +444,7 @@ Grab them from here: [awesome-kubernetes/scripts](https://github.com/redhatspain ### Postman & Newman API Automated Tests - [LerryAlexander: Postman + Newman API Automated Tests running on a Jenkins Pipeline 🌟](https://github.com/LerryAlexander/postman_jenkins_api_tests) +- [praveendavidmathew.medium.com: Data driven testing per request without using data file](https://praveendavidmathew.medium.com/data-driven-testing-per-request-without-using-data-file-aeb573b4f63a) ### Monitoring Jenkins with Grafana - [Mostrando resultados de Jenkins en Grafana mediante InfluxDB 🌟](https://enmilocalfunciona.io/mostrando-resultados-de-jenkins-en-grafana-mediante-influxdb/) @@ -484,6 +526,9 @@ Grab them from here: [awesome-kubernetes/scripts](https://github.com/redhatspain - [github.com/aws-samples/aws-training-demo](https://github.com/aws-samples/aws-training-demo) - [cyberciti.biz: How to create MySQL user and grant permissions in AWS RDS](https://www.cyberciti.biz/faq/how-to-create-mysql-user-and-grant-permissions-in-aws-rds/) - [stacksimplify.com: DevOps with AWS CodePipeline on AWS EKS](https://www.stacksimplify.com/aws-eks/aws-devops-eks/learn-to-master-devops-on-aws-eks-using-aws-codecommit-codebuild-codepipeline/) +- [medium: Fetch Application Inventory using Systems Manager](https://medium.com/cloud-techies/application-inventory-using-system-manager-f3eeb75d3279) Get application inventory from each EC2 instance and store it in centralized account S3 bucket. To query the information from s3 bucket, we are integrating Glue, Athena (from another account). +- [youtube: Build a Music Sharing App with Amazon S3 and AWS Amplify](https://www.youtube.com/watch?v=6W2TuBDaaiI&ab_channel=AliSpittel) +- [freecodecamp.org: How to Deploy a React App to Production Using Docker and NGINX with API Proxies](https://www.freecodecamp.org/news/how-to-deploy-react-apps-to-production/) ## Azure DevOps Demos - [Azure DevOps Demo Generator](https://azuredevopsdemogenerator.azurewebsites.net/) @@ -521,6 +566,8 @@ Grab them from here: [awesome-kubernetes/scripts](https://github.com/redhatspain - [opensource.com: A guide to Terraform for Kubernetes beginners](https://opensource.com/article/20/7/terraform-kubernetes) Learn how to make a Minikube cluster and deploy to it with Terraform. - [medium: Install Istio on Azure Kubernetes cluster using Terraform](https://medium.com/@vipinagarwal18/install-istio-on-azure-kubernetes-cluster-using-terraform-214f6d3f611) - [brennerm.github.io: Setting up an EKS cluster with IAM/IRSA integration](https://brennerm.github.io/posts/setting-up-eks-with-irsa-using-terraform.html) +- [betterprogramming.pub: Create an Amazon EKS Fargate Cluster and Managed Node Group Using Terraform](https://betterprogramming.pub/with-latest-updates-create-amazon-eks-fargate-cluster-and-managed-node-group-using-terraform-bc5cfefd5773) Serverless clusters and HashiCorp’s Terraform on AWS +- [azapril.dev: Deploying a LogicApp with Terraform (Bonus: in an AzDO pipeline)](https://azapril.dev/2021/04/12/deploying-a-logicapp-with-terraform/) ## Prometheus and Grafana - [docker-compose-tpg: Telegraf + Prometheus + Grafana Local Testing Environments](https://github.com/xiaopeng163/docker-compose-tpg) Setup learning environment for Telegraf, Prometheus and Grafana with docker-compose. (include SNMP simulators). @@ -533,3 +580,10 @@ Grab them from here: [awesome-kubernetes/scripts](https://github.com/redhatspain ## Red Hat Process Automation Manager - [gitlab.com: Red Hat Process Automation Manager - Signal Marketing Demo](https://gitlab.com/bpmworkshop/rhpam-signal-marketing-demo) + +## API Testing and Postman +- [developers.redhat.com: Automated API testing for the KIE Server](https://developers.redhat.com/blog/2020/05/01/automated-api-testing-for-the-kie-server/) +- [github.com/microsoft/azure-digital-twins-postman-samples](https://github.com/microsoft/azure-digital-twins-postman-samples) The repo contains a single postman_collection.json file that contains a postman collection of requests to the Azure Digital Twins APIs. Currently the focus of the collection is on on the data plan and includes Models, Query, and Twins. + +## Serverless +- [sitepoint.com: A Guide to Serverless Functions and How to Deploy Them](https://www.sitepoint.com/gatsby-mdx-blog/) \ No newline at end of file diff --git a/docs/devel-sites.md b/docs/devel-sites.md index e3982957..dd378e67 100644 --- a/docs/devel-sites.md +++ b/docs/devel-sites.md @@ -3,4 +3,5 @@ - https://drawkit.io Hand drawn illustrations. - https://happyhues.com Superb colors palettes. - https://svgporn.com High quality svg logos. +- [El camino del Frontend Developer](https://github.com/mrcodedev/frontend-developer-resources) Recursos gratuitos para empezar a ser un Frontend Developer o ampliar conocimientos diff --git a/docs/developerportals.md b/docs/developerportals.md index 9cbaa36e..1709bd54 100644 --- a/docs/developerportals.md +++ b/docs/developerportals.md @@ -29,6 +29,7 @@ ## Introduction - [Layering domains and microservices using API Gateways](https://kislayverma.com/software-architecture/layering-domains-and-microservices-using-api-gateways/) +- [ajay-yadav109458.medium.com: Concepts of API Gateway](https://ajay-yadav109458.medium.com/concepts-of-api-gateway-ac4993a0af44) ## API Landscape and API Marketplaces - [API Landscape](https://www.apidays.co/api-landscape) @@ -47,6 +48,7 @@ ## API Managers with API Gateways & Developer Portals - [moesif.com: How to choose the right API Gateway for your platform: Comparison of Kong, Tyk, Apigee, and alternatives](https://www.moesif.com/blog/technical/api-gateways/How-to-Choose-The-Right-API-Gateway-For-Your-Platform-Comparison-Of-Kong-Tyk-Apigee-And-Alternatives/) +- [towardsdatascience.com: Building Small Services, Deploying on Kubernetes, and Integrating with API Gateway](https://towardsdatascience.com/building-small-services-deploying-on-kubernetes-and-integrating-with-api-gateway-4909db4e5282) Abstracting Backend API Authentication with Python & Redis ### API Management vs API Gateway vs Developer Portals - **An API gateway** refers to the individual proxy server. diff --git a/docs/devops.md b/docs/devops.md index fb44090b..55395738 100644 --- a/docs/devops.md +++ b/docs/devops.md @@ -8,6 +8,7 @@ - [Blogs](#blogs) - [Xebia Labs and DevOps](#xebia-labs-and-devops) - [DevOps Tools](#devops-tools-1) + - [Puppet](#puppet) - [Relay](#relay) - [Netflix and DevOps](#netflix-and-devops) - [Public Cloud DevOps](#public-cloud-devops) @@ -25,6 +26,8 @@ - [automationreinvented.blogspot.com: Top 11 kubernetes interview questions for SDET/DevOps SET-02? Kubernetes deployment commands](https://automationreinvented.blogspot.com/2020/10/top-11-kubernetes-interview-questions.html) - [denic.hashnode.dev: Resources to crush the technical interview](https://denic.hashnode.dev/resources-to-crush-the-technical-interview) - [learnsteps.com: DevOps Interview Questions: How will you scale your current CI-CD pipeline](https://www.learnsteps.com/devops-interview-questions-how-will-you-scale-your-current-ci-cd-pipeline/) +- [intellipaat.com: Top DevOps Interview Questions – Most Asked](https://intellipaat.com/blog/interview-question/devops-interview-questions/) +- [vitalflux.com: 15 Tricky DevOps Architect Interview Questions & Answers](https://vitalflux.com/devops-architect-interview-questions) ## Configuration Drift - [Dzone: Configuration Drift 🌟](https://dzone.com/articles/configuration-drift) Configuration Drift is the phenomenon where running servers in an infrastructure become more and more different as time goes on, due to manual ad-hoc changes and updates, and general entropy. @@ -104,6 +107,23 @@ * [devopscurry.com: DevOps 2021: Market yourself with a smart and highly impressive DevOps](https://devopscurry.com/tips-to-create-a-highly-effective-devops-resume/) * [dzone: DevOps is not just automation! 🌟](https://dzone.com/articles/devops-is-not-only-automation) While every day we are talking about different technologies, tools, and methods under the name of DevOps, we should not forget the in-depth meaning of DevOps. * [deloitte.com: Culture change, not tech, is the secret to DevOps success (podcast) 🌟](https://www2.deloitte.com/us/en/pages/consulting/articles/secret-to-devops-isnt-about-tools-its-about-culture-value-and-outcomes-architecting-the-cloud-podcast-sre-site-reliability-engineering-resiliency-cloud-adoption-cloud-value-outcomes-culture-change.html) Doing DevOps right involves more than technology. It requires changing the organizational culture to build a joint-responsibility model based on outcomes and value. How companies implement that culture change will be critical in determining DevOps success. +* [containerjournal.com: 9 Pillars of Engineering DevOps With Kubernetes](https://containerjournal.com/uncategorized/9-pillars-of-engineering-devops-with-kubernetes/) +* [content.techgig.com: 5 Best DevOps practices for beginners](https://content.techgig.com/5-best-devops-practices-for-beginners/articleshow/81368965.cms) +* [stackoverflow.blog: Infrastructure as code: Create and configure infrastructure elements in seconds](https://stackoverflow.blog/2021/03/08/infrastructure-as-code-create-and-configure-infrastructure-elements-in-seconds/) IaC allows developers to supply IT environments with multiple lines of code and can be deployed in a matter of minutes (in contrast to manual infrastructure, which can take hours if not days to be deployed). +* [devops.com: 5 Steps to Successful DevOps Culture](https://devops.com/five-steps-to-successful-devops-culture) +* [cst-bg.net: 13 clues you are doing DevOps right 🌟](https://www.cst-bg.net/post/13-clues-to-good-devops) +* [medium.com: DevOps, Observability, and the need to tear down organizational boundaries 🌟](https://medium.com/lightstephq/devops-observability-and-the-need-to-tear-down-organizational-boundaries-f5d25755ff3a) +* [softwebsolutions.com: DevOps and Microservices – Creating change together](https://www.softwebsolutions.com/resources/devops-and-microservices.html) +* [thenewstack.io: 5 Cloud Automation Tips for Developers and DevOps](https://thenewstack.io/5-cloud-automation-tips-for-developers-and-devops/) +* [thenewstack.io: Debugging for Reduced DevOps Disruptions](https://thenewstack.io/debugging-for-reduced-devops-disruptions) +* [containerjournal.com: Kubernetes Enables DevOps-as-a-Service (DaaS) 🌟](https://containerjournal.com/features/kubernetes-enables-devops-as-a-service-daas/) +* [thenewstack.io: Maximizing the Value of Containerization for DevOps](https://thenewstack.io/maximizing-the-value-of-containerization-for-devops/) +* [opensource.com: A DevOps guide to documentation](https://opensource.com/article/21/3/devops-documentation) Bring your documentation writing into the DevOps lifecycle. +* [infoq.com: DevOps is Not Enough for Scaling and Evolving Tech-Driven Organizations: a Q&A with Eduardo da Silva](https://www.infoq.com/articles/devops-not-enough-scaling-tech-driven-organizations/) +* [dev.to: Your Roadmap to Become a DevOps Engineer in 2021](https://dev.to/kodekloud/your-roadmap-to-become-a-devops-engineer-in-2020-i1n) +* [infoworld.com: 5 devops practices to improve application reliability](https://www.infoworld.com/article/3613155/5-devops-practices-to-improve-application-reliability.html) +* [devops.com: Languages and DevOps: Recommendations](https://devops.com/languages-and-devops-recommendations/) +* [devops.com: Survey Shows Mounting DevOps Frustration and Costs](https://devops.com/survey-shows-mounting-devops-frustration-and-costs/)
[![OCP 4 Pland and Deploy](images/openshift_day2.png)](https://www.openshift.com/blog/openshift-end-to-end-cluster-customization) @@ -115,6 +135,7 @@ - [medium: Technologies & Tools to Watch in 2021 🌟](https://medium.com/dev-genius/technologies-tools-to-watch-in-2021-a216dfc30f25) - [DevOps Toolbox: Jenkins, Ansible, Chef, Puppet, Vagrant, & SaltStack](https://hostadvice.com/blog/devops-toolbox-jenkins-ansible-chef-puppet-vagrant-saltstack/) - [devopscube.com: Vagrant Tutorial For Beginners: Getting Started Guide](https://devopscube.com/vagrant-tutorial-beginners/) +- [devops.com: 11 Open Source DevOps Tools We Love For 2021](https://devops.com/11-open-source-devops-tools-we-love-for-2021/) ## DevOps as a Service (DaaS) - [DevOps as a Service: Migrating Your Entire DevOps Stack to the Cloud](https://devops.com/devops-as-a-service-migrating-your-entire-devops-stack-to-the-cloud/) The goal of DaaS is to enable organizations to focus on developing and delivering software without having to worry about managing or maintaining tools. It is designed to abstract away the intricacies of tool integration, deployment and maintenance. This enables teams to focus on higher-level tasks, and outsources significant manual effort. @@ -125,6 +146,7 @@ - [devopszone.info](https://www.devopszone.info/) - [devopsdigest.com](https://www.devopsdigest.com/) - [Top 15 DevOps blogs to read and follow](https://searchitoperations.techtarget.com/feature/Top-15-DevOps-blogs-to-read-and-follow) +- [devopstips.net](https://devopstips.net/) ## Xebia Labs and DevOps - [DevOps Glosary of Terms 🌟](https://xebialabs.com/glossary/) @@ -149,6 +171,10 @@ - [DevOps Tool Comparison: Docker Vs Kubernetes Vs Ansible](https://reviewnprep.com/blog/devops-tool-comparison-docker-vs-kubernetes-vs-ansible/) - [cloudtweaks.com: DevOps - Secure and Scalable CI/CD Pipeline with AWS](https://cloudtweaks.com/2019/05/devops-secure-and-scalable-ci-cd-pipeline-with-aws/) - [medium: DevOps tools Handbook 🌟](https://medium.com/@anujsharma12feb/devops-tools-handbook-b42487a53353) +- [reviewnprep.com: DevOps Tool Primer: Docker, Kubernetes, Ansible](https://reviewnprep.com/blog/devops-tool-comparison-docker-vs-kubernetes-vs-ansible/) + +### Puppet +- [puppet.com: Reporting 🌟](https://puppet.com/docs/puppet/7.5/reporting_about.html) As more projects adopt the Kubernetes Resource Model for managing things beyond containers, we really need a reporting framework to help people understand configuration drift. ### Relay - [Relay](https://relay.sh/) Event-driven automation that connects the cloud providers, DevOps tools, and other APIs you already use. diff --git a/docs/devsecops.md b/docs/devsecops.md index cbcdc312..89b3ec48 100644 --- a/docs/devsecops.md +++ b/docs/devsecops.md @@ -7,6 +7,7 @@ - [Project Calico](#project-calico) - [Security Patterns for Microservice Architectures](#security-patterns-for-microservice-architectures) - [Anchore Container Security Solutions for DevSecOps](#anchore-container-security-solutions-for-devsecops) +- [Twistlock and Threat Stack Container Security](#twistlock-and-threat-stack-container-security) - [StackRox](#stackrox) - [Secure Container Based CI/CD Workflows](#secure-container-based-cicd-workflows) - [Securing Kubernetes With Anchore](#securing-kubernetes-with-anchore) @@ -14,12 +15,14 @@ - [Databases in DMZ and Intranet](#databases-in-dmz-and-intranet) - [Removing Credentials From Git Repo](#removing-credentials-from-git-repo) - [Pentesting](#pentesting) +- [SQL Injection](#sql-injection) - [Credential Managers](#credential-managers) - [keycloak](#keycloak) - [Git Credential Manager Core](#git-credential-manager-core) - [GitOps Secret Management](#gitops-secret-management) - [HashiCorp Vault](#hashicorp-vault) - [CyberArk and Ansible](#cyberark-and-ansible) + - [CyberArk Conjur](#cyberark-conjur) - [SOPS for Kubernetes](#sops-for-kubernetes) - [Alternatives](#alternatives) - [Serverless Security Best Practices](#serverless-security-best-practices) @@ -31,6 +34,7 @@ - [Helm Charts Security](#helm-charts-security) - [Password Recovery](#password-recovery) - [Books](#books) +- [CVEs](#cves) ## Introduction - [fiercesw.com: DevOps vs DevSecOps](https://fiercesw.com/devsecops-starter) @@ -53,6 +57,12 @@ - [securityboulevard.com: DevOps vs. DevSecOps – Here’s How They Fit Together](https://securityboulevard.com/2021/02/devops-vs-devsecops-heres-how-they-fit-together/) - [opensource.com: How to adopt DevSecOps successfully](https://opensource.com/article/21/2/devsecops) Integrating security throughout the software development lifecycle is important, but it's not always easy. - [devops.com: DevSecOps Trends to Know For 2021](https://devops.com/devsecops-trends-for-2021/) +- [devops.com: From Agile to DevOps to DevSecOps: The Next Evolution](https://devops.com/from-agile-to-devops-to-devsecops-the-next-evolution/) +- [permission.site](https://permission.site/) How much stuff one can do from a web browser these days—scary stuff. Stay safe. Disable JS and most of stuff won't work at all. +- [ais.com: Leaping into DevSecOps from DevOps](https://www.ais.com/leaping-into-devsecops-from-devops/) +- [infoq.com: The Defense Department's Journey with DevSecOps](https://www.infoq.com/news/2020/06/defense-department-devsecops/) +- [amazon.com: Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST and DAST tools](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/) +- [infoq.com: 9 Trends That Are Influencing the Adoption of Devops and Devsecops in 2021](https://www.infoq.com/articles/devops-secure-trends/) ## Kubernetes Threat Modelling - [marcolancini.it: The Current State of Kubernetes Threat Modelling](https://www.marcolancini.it/2020/blog-kubernetes-threat-modelling/) @@ -80,6 +90,11 @@ ## Anchore Container Security Solutions for DevSecOps - [Anchore](https://anchore.com) Container image inspection and policy-based compliance +## Twistlock and Threat Stack Container Security +- [Twistlock](https://www.twistlock.com/) +- [Threat Stack](https://www.threatstack.com/) +- [dzone: A Twistlock and Threat Stack Comparison](https://dzone.com/articles/a-twistlock-and-threat-stack-comparison) Compare two of the most popular tools available for container security, and how their different approaches breed different solutions. + ## StackRox - [stackrox.com](https://www.stackrox.com/) - [redhat.com: Red Hat to Acquire Kubernetes-Native Security Leader StackRox](https://www.redhat.com/en/about/press-releases/red-hat-acquire-kubernetes-native-security-leader-stackrox) @@ -103,6 +118,10 @@ ## Pentesting - [forbes.com: DevOps Drives Pentesting Delivered As A Service](https://www.forbes.com/sites/chenxiwang/2020/06/17/devops-drives-pentesting-delivered-as-a-service/) - [emagined.com: How to conduct a penetration test](https://www.emagined.com/news-notes/2020/6/8/how-to-conduct-a-penetration-test) +- [securityboulevard.com: Kubernetes Pentest Methodology Part 3](https://securityboulevard.com/2019/11/kubernetes-pentest-methodology-part-3/) + +## SQL Injection +- [patchthenet.medium.com: Introduction to SQL Injection](https://patchthenet.medium.com/introduction-to-sql-injection-sql-injection-for-beginners-579c00431d40) ## Credential Managers ### keycloak @@ -135,11 +154,18 @@ - [hashicorp.com: Automate Secret Injection into CI/CD Workflows with the GitHub Action for Vault](https://www.hashicorp.com/blog/vault-github-action) - [hashicorp.com: Use AWS Lambda Extensions to Securely Retrieve Secrets From HashiCorp Vault](https://www.hashicorp.com/blog/aws-lambda-extensions-for-hashicorp-vault) Developers no longer have to make their Lambda functions Vault-aware. - [github.com/kelseyhightower: Serverless Vault with Cloud Run](https://github.com/kelseyhightower/serverless-vault-with-cloud-run) This tutorial walks you through deploying Hashicorp's Vault on Cloud Run, Google Cloud's container based Serverless compute platform. +- [confluent.io: How to Manage Secrets for Confluent with Kubernetes and HashiCorp Vault](https://www.confluent.io/blog/manage-secrets-with-kubernetes-and-hashicorp-vault/) +- [digitalvarys.com: Simple Introduction to HashiCorp Vault](https://digitalvarys.com/simple-introduction-to-hashicorp-vault/) +- [hashicorp.com: HCP Vault is now generally available on AWS 🌟](https://www.hashicorp.com/blog/vault-on-the-hashicorp-cloud-platform-ga) ### CyberArk and Ansible - [ansible.com: Simplifying secrets management with CyberArk and Red Hat Ansible Automation Platform](https://www.ansible.com/blog/simplifying-secrets-management-with-cyberark-and-red-hat-ansible-automation-platform) - [ansible.com: Automating Security with CyberArk and Red Hat Ansible Automation Platform](https://www.ansible.com/blog/automating-security-with-cyberark-and-red-hat-ansible-automation-platform) +### CyberArk Conjur +- [conjur.org](https://www.conjur.org/) +- [infracloud.io: Securing Kubernetes Secrets with Conjur 🌟](https://www.infracloud.io/blogs/securing-kubernetes-secrets-conjur) + ### SOPS for Kubernetes - [dev.to: Manage your secrets in Git with SOPS for Kubernetes 🌟](https://dev.to/stack-labs/manage-your-secrets-in-git-with-sops-for-kubernetes-57me) @@ -158,6 +184,9 @@ - [sysdig.com: Sysdig 2021 container security and usage report: Shifting left is not enough 🌟](https://sysdig.com/blog/sysdig-2021-container-security-usage-report/) - [itnext.io: Hardening Docker and Kubernetes with seccomp 🌟](https://itnext.io/hardening-docker-and-kubernetes-with-seccomp-a88b1b4e2111) - [redhat.com: Improving Linux container security with seccomp 🌟](https://www.redhat.com/sysadmin/container-security-seccomp) Try this method of using an OCI runtime hook for tracing syscalls before you build a container. +- [openshift.com: Signing and Verifying Container Images 🌟](https://www.openshift.com/blog/signing-and-verifying-container-images) +- [redhat.com: Introducing Red Hat Vulnerability Scanner Certification](https://www.redhat.com/en/blog/introducing-red-hat-vulnerability-scanner-certification) +- [docs.microsoft.com: Introduction to Azure Defender for container registries](https://docs.microsoft.com/en-us/azure/security-center/defender-for-container-registries-introduction#when-are-images-scanned) Defender for Container Registries Continuous Image Scan for vulnerabilities is now available for General Availability (GA) ## Pod Security Policies - [octetz.com: Setting Up Pod Security Policies](https://octetz.com/docs/2018/2018-12-07-psp/) By default, Kubernetes allows anything capable of creating a Pod to run a fairly privileged container that can compromise a system. Pod Security Policies protect clusters from privileged pods by ensuring the requester is authorised. @@ -181,4 +210,7 @@ - [hashcat](https://hashcat.net/hashcat/) ## Books -- [Microservices Security in Action](https://medium.facilelogin.com/microservices-security-in-action-933072043ad7) \ No newline at end of file +- [Microservices Security in Action](https://medium.facilelogin.com/microservices-security-in-action-933072043ad7) + +## CVEs +- [sysdig.com: Mitigating CVE-2021-20291: DoS affecting CRI-O and Podman](https://sysdig.com/blog/cve-2021-20291-cri-o-podman/) \ No newline at end of file diff --git a/docs/docker.md b/docs/docker.md index 8d98e656..babe1a6f 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -11,9 +11,11 @@ - [Docker Compose](#docker-compose) - [Moving Linux Services Into Containers](#moving-linux-services-into-containers) - [Portainer](#portainer) +- [DockStation](#dockstation) - [Linux Container Base Images](#linux-container-base-images) - [Blogs](#blogs) - [Awesome Lists](#awesome-lists) +- [Alternatives to Docker](#alternatives-to-docker) ## Introduction and Tutorials * [Wikipedia.org: Docker](https://en.wikipedia.org/wiki/Docker_(software)) @@ -59,6 +61,11 @@ * [docker.com: Containerized Python Development – Part 1](https://www.docker.com/blog/containerized-python-development-part-1/) * [docker.com: Containerized Python Development – Part 2](https://www.docker.com/blog/containerized-python-development-part-2/) * [docker.com: Containerized Python Development – Part 3](https://www.docker.com/blog/containerized-python-development-part-3/) +* [sysdig.com: Top 20 Dockerfile best practices 🌟](https://sysdig.com/blog/dockerfile-best-practices/) +* [pythonspeed.com: The worst so-called “best practice” for Docker](https://pythonspeed.com/articles/security-updates-in-docker/) +* [developers.redhat.com: Making environment variables accessible in front-end containers](https://developers.redhat.com/blog/2021/03/04/making-environment-variables-accessible-in-front-end-containers/) +* [towardsdatascience.com: Have you heard about our lord and savior Docker?](https://towardsdatascience.com/docker-101-ee3d2b8ace11) Introduction to working with Docker and creating your own development environment +* [medium: Dockerizing a REST API in Python Less Than 9 MB and Based on scratch Image](https://medium.com/analytics-vidhya/dockerizing-a-rest-api-in-python-less-than-9-mb-and-based-on-scratch-image-ef0ee3ad3f0a) ## Docker Patterns and Antipatterns - [codefresh.io: Docker anti-patterns 🌟](https://codefresh.io/containers/docker-anti-patterns/) @@ -88,9 +95,11 @@ ## Docker Tools - [Top 50 Docker Tools](https://blog.inedo.com/top-50-docker-tools) - [docker-ecs-plugin: Docker Releases Plugin for Simplified Deployments into AWS ECS and Fargate](https://www.infoq.com/news/2020/07/docker-ecs-plugin/) +- [dive 🌟](https://github.com/wagoodman/dive) A tool for exploring a docker image, layer contents, and discovering ways to shrink the size of your Docker/OCI image. Use the dive tool to analyze a Docker image of your application. What did I learn? While Jib creates 3 layers for Spring Boot app (dependencies, resources and classes), Paketo Buildpacks places resources and classes in the same layer. ## Docker and WSL2 - [Creating the best Linux Development experience on Windows & WSL 2](https://www.docker.com/blog/creating-the-best-linux-development-experience-on-windows-wsl-2/) +- [andrewlock.net: Installing Docker Desktop for Windows and WSL 2](https://andrewlock.net/installing-docker-desktop-for-windows/) ## Docker Cheat sheet * [Docker Cheat Sheets](cheatsheets.md) @@ -110,6 +119,10 @@ ## Portainer * [Portainer 🌟](https://www.portainer.io/) Making Docker management easy +* [Portainer Community Edition](https://www.portainer.io/products/community-edition) + +## DockStation +- [dockstation.io](https://dockstation.io/) ## Linux Container Base Images * [crunchtools.com: A Comparison of Linux Container Images](http://crunchtools.com/comparison-linux-container-images/) @@ -123,6 +136,10 @@ * [Awesome Docker 🌟](https://github.com/veggiemonk/awesome-docker) * [Awesome Compose 🌟](https://github.com/docker/awesome-compose) +## Alternatives to Docker +- [blog.alexellis.io: Building containers without Docker 🌟](https://blog.alexellis.io/building-containers-without-docker/) +- [medium: nerdctl: Docker-compatible CLI for contaiNERD](https://medium.com/nttlabs/nerdctl-359311b32d0e) + diff --git a/docs/elearning.md b/docs/elearning.md index aee0805e..101ff871 100644 --- a/docs/elearning.md +++ b/docs/elearning.md @@ -26,4 +26,5 @@ * [wiki.bash-hackers.org](https://wiki.bash-hackers.org/) * [SQL Police Department](https://sqlpd.com/) * [techstudyslack.com](https://techstudyslack.com/) TechStudySlack is a Slack for people studying Tech. -* [kube.academy](https://kube.academy/) KubeAcademy from VMware. Learn Kubernetes From Experts For Free \ No newline at end of file +* [kube.academy](https://kube.academy/) KubeAcademy from VMware. Learn Kubernetes From Experts For Free +* [codewars.com](https://www.codewars.com) Improve your skills by training with others on real code challenges \ No newline at end of file diff --git a/docs/faq.md b/docs/faq.md index d88511b9..8fc7f248 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,4 +1,12 @@ # Microservices FAQ +- [FAQ](#faq) +- [History of Microservices](#history-of-microservices) +- [Kubernetes Native](#kubernetes-native) +- [Adoption of Cloud-Native Architecture](#adoption-of-cloud-native-architecture) +- [Migration Styles. Lift and Shift Cloud Migration Strategy](#migration-styles-lift-and-shift-cloud-migration-strategy) +- [Architectural Patterns for Caching Microservices](#architectural-patterns-for-caching-microservices) + +## FAQ - [Should I Use A Microservices Architecture? What about the UI? 🌟](https://www.jamesmichaelhickey.com/microservices-architecture/) - [medium.com: STOP!! You don’t need Microservices](https://medium.com/@ebin/stop-you-dont-need-microservices-dc732d70b3e0) - [contino.io: How to Make Enterprise Container Strategies That Last (Part One)](https://www.contino.io/insights/how-to-make-enterprise-container-strategies-that-last-part-one) @@ -18,12 +26,18 @@ ## Adoption of Cloud-Native Architecture - [Adoption of Cloud-Native Architecture, Part 1: Architecture Evolution and Maturity](https://www.infoq.com/articles/cloud-native-architecture-adoption-part1/) -### Migration Styles. Lift and Shift Cloud Migration Strategy +## Migration Styles. Lift and Shift Cloud Migration Strategy - [From monolith to containers: How Verizon containerized legacy applications on OpenShift 🌟](https://www.youtube.com/watch?v=Q6i0LK4vHsU): - Lift and shift is a cloud migration strategy that refers to removing workloads and tasks from one storage location and placing them in another, usually cloud-based, location. - Moving applications to the cloud can be challenging if you are unprepared. In fact, many businesses experience some level of migration failure because of poor planning. - The lift and shift migration style is one of the approaches that can help you transition to the cloud without the need to redesign applications or disrupt workflow operations. - It all starts with containerizing the applications using platforms like Docker and then moving entirely to a microservices architecture. +- [dzone: Cloud Migration(Lift-and-Shift): My Notes From the Ground 🌟](https://dzone.com/articles/lift-and-shift-my-experience-on-the-ground) +- [dzone: The Best Cloud Migration Approach: Lift-And-Shift, Replatform, Or Refactor?](https://dzone.com/articles/the-best-cloud-migration-approach-lift-and-shift-r) There are a number of ways to get your applications to the cloud, but the question of which method to use is a little up in the air. +- [dzone: 10 Commandments of Microservice Decomposition 🌟](https://dzone.com/articles/10-commandments-on-microservice-decomposition) In this article, I will try to cover the purposes of terms used while decomposing microservices and try to fit them under one umbrella concept. + +## Architectural Patterns for Caching Microservices +- [hazelcast.com: Where Is My Cache? Architectural Patterns for Caching Microservices](https://hazelcast.com/blog/architectural-patterns-for-caching-microservices/) ---
diff --git a/docs/git.md b/docs/git.md index b99b2004..218b3a19 100644 --- a/docs/git.md +++ b/docs/git.md @@ -1,5 +1,6 @@ # Git and Patterns for Managing Source Code Branches. Merge BOTs - [Git Distributed Version-Control System](#git-distributed-version-control-system) +- [Shields](#shields) - [Design By Contract](#design-by-contract) - [Git Cheat Sheets](#git-cheat-sheets) - [Monorepo VS Polyrepo](#monorepo-vs-polyrepo) @@ -16,6 +17,7 @@ - [BitBucket](#bitbucket) - [GitLab](#gitlab) - [GitHub](#github) + - [GitHub Actions](#github-actions) - [GitHub Actions and OpenShift](#github-actions-and-openshift) - [Git Tools](#git-tools) - [Semantic-release. CI/CD semantic release workflow (semantic Versioning, commit format and releases)](#semantic-release-cicd-semantic-release-workflow-semantic-versioning-commit-format-and-releases) @@ -86,6 +88,19 @@ * [smashingmagazine.com: Getting The Most Out Of Git](https://www.smashingmagazine.com/2021/02/getting-the-most-out-of-git/) * [thenewstack.io: Why Open Source Project Maintainers are Reluctant to use Digital Signatures, Two-Factor Authentication](https://thenewstack.io/why-open-source-project-maintainers-are-reluctant-to-use-digital-signatures-two-factor-authentication/) * [geeksforgeeks.org: How to Write Good Commit Messages in GitHub?](https://www.geeksforgeeks.org/how-to-write-good-commit-messages-in-github/) +* [freecodecamp.org: What is Git? A Beginner's Guide to Git Version Control](https://www.freecodecamp.org/news/what-is-git-learn-git-version-control) +* [dev.to: ELI5: Git Rebase vs. Merge 🌟](https://dev.to/karaluton/explain-like-i-m-five-git-rebase-vs-merging-1k69) +* [c-sharpcorner.com: 0 Git Commands You Should Know](https://www.c-sharpcorner.com/article/20-git-commands-you-should-know/) +* [opensource.com: 3 reasons I use the Git cherry-pick command](https://opensource.com/article/21/3/git-cherry-pick) Cherry-picking solves a lot of problems in Git repositories. Here are three ways to fix your mistakes with git cherry-pick. +* [opensource.com: Find what changed in a Git commit](https://opensource.com/article/21/4/git-whatchanged) Git offers several ways you can quickly see which files changed in a commit. +* [freecodecamp.org: How to Use Git and Git Workflows – a Practical Guide](https://www.freecodecamp.org/news/practical-git-and-git-workflows/) +* [opensource.com: A practical guide to using the git stash command](https://opensource.com/article/21/4/git-stash) Learn how to use the git stash command and when you should use it. +* [stackoverflow.blog: A look under the hood: how branches work in Git](https://stackoverflow.blog/2021/04/05/a-look-under-the-hood-how-branches-work-in-git/) Git branches allow you to keep different versions of your code cleanly separated. Here's a look at how they work and why you should know about them. +* [about.gitlab.com: Why small merge requests are key to a great review 🌟](https://about.gitlab.com/blog/2021/03/18/iteration-and-code-review/) +* [opensource.com: 4 tips for context switching in Git](https://opensource.com/article/21/4/context-switching-git) Compare the pros and cons of four options to switch branches while working in Git. + +## Shields +- [shields.io 🌟](https://shields.io/) ## Design By Contract [Wikipedia: Design by contract (DbC)](https://en.wikipedia.org/wiki/Design_by_contract), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software. @@ -161,6 +176,7 @@ It prescribes that software designers should define formal, precise and verifiab * [Dzone: Why I Prefer Trunk-Based Development Over Feature Branching and GitFlow 🌟](https://dzone.com/articles/why-i-prefer-trunk-based-development-over-feature) Check out the components of Trunk-based Development as implemented by Facebook and Google, and see how it helps resolve and prevent merge conflicts. * [team-coder.com: From Git Flow to Trunk Based Development](https://team-coder.com/from-git-flow-to-trunk-based-development/) * [stridenyc.com/podcasts: Trunk Based Development vs Gitflow](https://www.stridenyc.com/podcasts/30-trunk-based-development-vs-gitflow) +* [freecodecamp.org: What is Trunk Based Development? A Different Approach to the Software Development Lifecycle](https://www.freecodecamp.org/news/what-is-trunk-based-development) ### Alternative Branching Models * [trunkbaseddevelopment.com: Alternative Branching Models](https://trunkbaseddevelopment.com/alternative-branching-models/) @@ -214,7 +230,9 @@ git push origin -f * [about.gitlab.com: How to use GitLab CI to deploy to multiple environments](https://about.gitlab.com/blog/2021/02/05/ci-deployment-and-environments/) * [about.gitlab.com: Meet Pipeline Editor, your one-stop-shop for building a CI/CD pipeline](https://about.gitlab.com/blog/2021/02/22/pipeline-editor-overview/) * [about.gitlab.com: A new era of Kubernetes integrations on GitLab.com](https://about.gitlab.com/blog/2021/02/22/gitlab-kubernetes-agent-on-gitlab-com/) The GitLab Kubernetes Agent enables secure deployments from GitLab SaaS to your Kubernetes cluster and provides deep integrations of your cluster to GitLab. - +* [docs.gitlab.com: Install GitLab Runner on Red Hat OpenShift](https://docs.gitlab.com/runner/install/openshift.html) +* [devclass.com: Git a March on: GitLab 13.10 ramps up security, adds support for OpenShift, DORA](https://devclass.com/2021/03/23/gitlab-march-release-focuses-on-security-and-scalability-pops-in-support-for-red-hat-openshift) + ## GitHub * [githubstatus.com 🌟](https://www.githubstatus.com/) * [GitHub Codespaces](https://github.com/features/codespaces) Get the full Visual Studio Code experience without leaving GitHub. @@ -234,9 +252,7 @@ git push origin -f * [grafana.com: How we use the Grafana GitHub plugin to track outstanding pull requests](https://grafana.com/blog/2020/09/21/how-we-use-the-grafana-github-plugin-to-track-outstanding-pull-requests/) * [itnext.io: Build & Ship: GitHub Container Registry & Kubernetes](https://itnext.io/build-ship-github-container-registry-kubernetes-aa06029b3f21) * [grafana: How we use the Grafana GitHub plugin to track outstanding pull requests](https://grafana.com/blog/2020/09/21/how-we-use-the-grafana-github-plugin-to-track-outstanding-pull-requests/) -* [docker.com: Docker Github Actions](https://www.docker.com/blog/docker-github-actions/) * [itnext.io: Build & Ship: GitHub Container Registry & Kubernetes](https://itnext.io/build-ship-github-container-registry-kubernetes-aa06029b3f21) -* [github.blog: Testing cloud apps with GitHub Actions and cloud-native open source tools](https://github.blog/2020-10-09-devops-cloud-testing/) * [theregister.com: Passwords begone: GitHub will ban them next year for authenticating Git operations](https://www.theregister.com/2020/12/17/github_bans_passwords/) * [github.blog: Learn about ghapi, a new third-party Python client for the GitHub API](https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for-the-github-api/) * [github.blog: Improving how we deploy GitHub](https://github.blog/2021-01-25-improving-how-we-deploy-github/) @@ -244,6 +260,19 @@ git push origin -f * [github.blog: Extending GitOps to reliability-as-code with GitHub and StackPulse](https://github.blog/2021-02-04-extending-gitops-to-reliability-as-code-with-github-and-stackpulse/) * [backhub.co](https://www.backhub.co/) Reliable GitHub repository backup, set up in minutes * [GitHub public roadmap 🌟](https://github.com/github/roadmap) +* [devops.com: Make GitHub Backups Part of Your Development Process](https://devops.com/make-github-backups-part-of-your-development-process/) +* [github.blog: Solving the innersource discovery problem - Discoverability](https://github.blog/2021-03-23-solving-the-innersource-discovery-problem/) +* [devopstips.net: Create, Host and Share Docker Images with GitHub Packages](https://devopstips.net/create-host-and-share-docker-images-with-github-packages) + +### GitHub Actions +- [github.blog: Testing cloud apps with GitHub Actions and cloud-native open source tools](https://github.blog/2020-10-09-devops-cloud-testing/) +- [docker.com: Docker Github Actions](https://www.docker.com/blog/docker-github-actions/) +- [laravel-news.com: Generate GitHub Actions Config for Laravel Projects with Ghygen](https://laravel-news.com/generate-github-actions-config-for-laravel-projects-with-ghygen) +- [blog.codecentric.de: Stop re-writing pipelines! Why GitHub Actions drive the future of CI/CD](https://blog.codecentric.de/en/2021/03/github-actions-nextgen-cicd/) +- [particule.io: CI/CD using Github Actions, AWS ECR and ECS Fargate](https://particule.io/en/blog/cicd-ecr-ecs/) +- [proandroiddev.com: “Continuous Integration/Delivery” for Android with GitHub Actions — Part 1](https://proandroiddev.com/continuous-integration-delivery-for-android-with-github-actions-part-1-b232ed2b1740) +- [github.blog: Implementing least privilege for secrets in GitHub Actions](https://github.blog/2021-04-13-implementing-least-privilege-for-secrets-in-github-actions/) +- [github.blog: Work with GitHub Actions in your terminal with GitHub CLI](https://github.blog/2021-04-15-work-with-github-actions-in-your-terminal-with-github-cli/) ### GitHub Actions and OpenShift - [redhat.com: Red Hat and GitHub Collaborate to Expand the Developer Experience on Red Hat OpenShift with GitHub Actions 🌟](https://www.redhat.com/en/about/press-releases/red-hat-and-github-collaborate-expand-developer-experience-red-hat-openshift-github-actions) Industry’s leading enterprise Kubernetes platform now integrates with GitHub, bringing DevOps automation tools from the world’s largest developer platform into the OpenShift ecosystem @@ -368,4 +397,6 @@ Automate them. + +
diff --git a/docs/gitops.md b/docs/gitops.md index 365f73e1..8d92de08 100644 --- a/docs/gitops.md +++ b/docs/gitops.md @@ -39,6 +39,12 @@ - [medium: GitOps : The Next Big Thing for DevOps and Automation!](https://medium.com/searce/gitops-the-next-big-thing-for-devops-and-automation-2a9597e51559) If you have similar questions like: “What’s GitOps?”, “Why we are moving towards this?”, “How and when one can implement this strategy in now running environment?”, “What are the tools it included?” then you have landed on the right page. - [thenewstack.io: Understanding GitOps: The Latest Tools and Philosophies](https://thenewstack.io/understanding-gitops-the-latest-tools-and-philosophies/) - [samiyaakhtar.medium.com: GitOps Observability — Visualizing the journey of a container](https://samiyaakhtar.medium.com/gitops-observability-visualizing-the-journey-of-a-container-5f6ef1f3c9d2) +- [clickittech.com: What is GitOps? 🌟](https://www.clickittech.com/devops/what-is-gitops) +- [blog.container-solutions.com: 11 Reasons for Adopting GitOps](https://blog.container-solutions.com/why-adopt-gitops) +- [opensource.com: GitOps vs. DevOps: What's the difference? 🌟](https://opensource.com/article/21/3/gitops) Get to know GitOps, an evolved form of DevOps. +- [geekflare.com: An Introduction to GitOps](https://geekflare.com/gitops-introduction/) +- [thenewstack.io: GitOps Use Cases You May Not Have Considered](https://thenewstack.io/gitops-use-cases-you-may-not-have-considered/) +- [kumomind.medium.com: Should I consider the GitOps methodology?](https://kumomind.medium.com/should-i-consider-the-gitops-methodology-f49e042b8c22) ## Git Repositories Structures - [GitOps: How to Ops Your Git the Right Way 🌟](https://dzone.com/articles/gitops-how-to-ops-your-git-the-right-way) In this article we’ll look into the specifics of creating Git repositories structures  —  the very core of the GitOps approach. @@ -49,6 +55,8 @@ - [kubesandclouds.com: Werf: Fully customizable GitOps](https://kubesandclouds.com/index.php/2020/09/01/werf-gitops/) - [searchitoperations.techtarget.com: GitOps pros grapple with Kubernetes configuration management. GitOps users seek ideal Kubernetes config tool 🌟](https://searchitoperations.techtarget.com/news/252492459/GitOps-pros-grapple-with-Kubernetes-configuration-management) Configuration management challenges GitOps early adopters, especially at large enterprises with millions of lines of Kubernetes YAML to manage. Ultimately, the industry hasn't found an ideal approach to Kubernetes configuration management, especially for GitOps. - [Tanka](https://tanka.dev/tutorial/jsonnet) a utility that blends Helm charts with Jsonnet, which combines the deployment speed and ubiquity of Helm charts with the more granular customizability supported by Jsonnet. +- [openshift.com: Announcing OpenShift GitOps](https://www.openshift.com/blog/announcing-openshift-gitops) +- [ibm.com: Enable GitOps](https://www.ibm.com/garage/method/practices/run/gitops/) GitOps focuses on the Ops side of DevOps and shows how operations configurations, infrastructures, and actions are like software. Everything is code and code is managed with Git. ### Flux. The GitOps Operator for Kubernetes - [Flux](https://fluxcd.io/) The GitOps operator for Kubernetes @@ -66,6 +74,9 @@ - Roll back with Git - Automate everything - [blog.sldk.de: Introduction to GitOps on Kubernetes with Flux v2 🌟](https://blog.sldk.de/2021/02/introduction-to-gitops-on-kubernetes-with-flux-v2/) +- [docs.microsoft.com: Configurations and GitOps with Azure Arc enabled Kubernetes](https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/conceptual-configurations) +- [cloud-viadee.medium.com: GitOps for IT-Architects: Transparent and Secure Kubernetes deployments](https://cloud-viadee.medium.com/gitops-for-it-architects-6312e7822819) +- [johnclarke73.medium.com: How GitOps works for us](https://johnclarke73.medium.com/our-continuous-delivery-journey-11d86dd68a49) From manually deployed monoliths to containers and GitOps with Weaveworks Flux ### Kustomize. Kubernetes native configuration management - [kustomize.io 🌟](https://kustomize.io/) Kustomize introduces a template-free way to customize application configuration that simplifies the use of off-the-shelf applications. Now, built into kubectl as apply -k. diff --git a/docs/golang.md b/docs/golang.md index a928d506..355e12e1 100644 --- a/docs/golang.md +++ b/docs/golang.md @@ -8,6 +8,11 @@ - [Awesome Go 🌟](https://github.com/avelino/awesome-go) - [inancgumus/learngo 🌟](https://github.com/inancgumus/learngo) A Huge Number of Go Examples, Exercises and Quizzes. - [eli.thegreenplace.net: REST Servers in Go: Part 4 - using OpenAPI and Swagger](https://eli.thegreenplace.net/2021/rest-servers-in-go-part-4-using-openapi-and-swagger/) +- [blog.getambassador.io: Debugging Go Microservices in Kubernetes with VScode](https://blog.getambassador.io/debugging-go-microservices-in-kubernetes-with-vscode-a36beb48ef1) Tutorial: Learn to debug Go microservices locally while testing against dependencies in a remote Kubernetes cluster +- [developers.redhat.com: Using Delve to debug Go programs on Red Hat Enterprise Linux](https://developers.redhat.com/blog/2021/03/03/using-delve-to-debug-go-programs-on-red-hat-enterprise-linux/) +- [Golang for Node.js Developers](https://github.com/miguelmota/golang-for-nodejs-developers) +- [The Ultimate Go Study Guide](https://github.com/hoanhan101/ultimate-go) + ## Client Go - [An example of using dynamic client of k8s.io/client-go](https://ymmt2005.hatenablog.com/entry/2020/04/14/An_example_of_using_dynamic_client_of_k8s.io/client-go) - [medium: Using the Go client framework 🌟](https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-4-using-go-b1d0e3c1c899) diff --git a/docs/helm.md b/docs/helm.md index 2f9687bc..b3811904 100644 --- a/docs/helm.md +++ b/docs/helm.md @@ -13,6 +13,7 @@ * [thoughtworks.com: Helm](https://www.thoughtworks.com/radar/tools/helm) * [helm.sh](https://helm.sh/) * [helm.sh/docs](https://helm.sh/docs) + * [helm.sh: Getting Started 🌟](https://helm.sh/docs/chart_template_guide/getting_started/) * [GitHub: Helm, the Kubernetes Package Manager](https://github.com/helm/helm) Installing and managing Kubernetes applications * [Helm and Kubernetes Tutorial - Introduction](https://www.youtube.com/watch?v=9cwjtN3gkD4) * [Delve into Helm: Advanced DevOps](https://www.youtube.com/watch?v=cZ1S2Gp47ng) @@ -44,12 +45,19 @@ * [itnext.io: Database migrations on Kubernetes using Helm hooks](https://itnext.io/database-migrations-on-kubernetes-using-helm-hooks-fb80c0d97805) * [jfrog.com: Steering Straight with Helm Charts Best Practices 🌟](https://jfrog.com/blog/helm-charts-best-practices/) * [rancher.com: Create Reproducible Security in Kubernetes with Helm 3 and Helm Charts](https://rancher.com/blog/2020/helm-security) +* [youtube.com: Demystifying Helm 🌟](https://www.youtube.com/watch?v=2HPsPOwHOlY&ab_channel=DonovanBrown) +* [harness.io: Introduction to Helm: Charts, Deployments, & More 🌟](https://harness.io/blog/continuous-delivery/what-is-helm/) +* [freecodecamp.org: What is a Helm Chart? A Tutorial for Kubernetes Beginners](https://www.freecodecamp.org/news/what-is-a-helm-chart-tutorial-for-kubernetes-beginners) +* [youtube: GitOps Guide to the Galaxy: Working with Helm](https://www.youtube.com/watch?v=1FzOlSed5ts&ab_channel=OpenShift) +* [cncf.io: Quick application deployments on MicroK8s using Helm Charts](https://www.cncf.io/blog/2021/03/23/quick-application-deployments-on-microk8s-using-helm-chart) +* [cncf.io: Add Java Agents to Existing Kubernetes and Helm Applications Instantly](https://www.cncf.io/blog/2021/03/24/add-java-agents-to-existing-kubernetes-and-helm-applications-instantly) ## Helm Chart Documentation * [chart-doc-gen: Helm Chart Documentation Generator](https://github.com/kubepack/chart-doc-gen) * [Frigate](https://frigate.readthedocs.io/) is a tool for automatically generating documentation for your Helm charts. It will use the chart’s Chart.yaml and values.yaml files in order to generate the content in a markup language of your choice. * [rafay.co: Helm Chart Hooks Tutorial](https://rafay.co/the-kubernetes-current/helm-chart-hooks-tutorial/) * [itnext.io: Helm: reusable chart — named templates, and a generic chart for multiple applications](https://itnext.io/helm-reusable-chart-named-templates-and-a-generic-chart-for-multiple-applications-13d9b26e9244) Designing reusable chart with Helm: named templates, and a generic chart for multiple applications +* [jfrog.com: Helm is for everyone! (download your free helm guide) ](https://jfrog.com/assets/helm-is-for-everyone/) ## Kubecrt * [Kubecrt](https://github.com/blendle/kubecrt) diff --git a/docs/ibm_cloud.md b/docs/ibm_cloud.md index af815ea8..0330d1e2 100644 --- a/docs/ibm_cloud.md +++ b/docs/ibm_cloud.md @@ -1,5 +1,6 @@ # IBM - [IBM Cloud](#ibm-cloud) +- [IBM cloud Enterprise Sandbox](#ibm-cloud-enterprise-sandbox) - [IBM API Connect](#ibm-api-connect) - [WebSphere Liberty with support of Java Microservices and Cloud Native Apps](#websphere-liberty-with-support-of-java-microservices-and-cloud-native-apps) - [Open Liberty](#open-liberty) @@ -21,6 +22,10 @@ - [xataka.com: IBM se multiplica: la IBM de siempre mantiene el foco en la nube, pero crea una nueva empresa para los servicios de red gestionados 🌟](https://www.xataka.com/pro/ibm-se-parte-dos-109-anos-despues-nube-da-dinero-que-se-creara-empresa-centrada-ella) - [reuters.com: IBM to break up 109-year old company to focus on cloud growth 🌟](https://www.reuters.com/article/us-ibm-divestiture/ibm-to-break-up-109-year-old-company-to-focus-on-cloud-growth-idUSKBN26T1TZ) +## IBM cloud Enterprise Sandbox +- [IBM cloud Enterprise ccccccfrnufhucnriuhfecnljdhjltirdvdgrrhunjfvccccccfrnufhgluucntrtnhjcbvfvlftktcvchrdnlug +- Sandbox 🌟](https://ibm-gsi-ecosystem.github.io/ibm-gsi-cloudnative-journey/) + ## IBM API Connect - [IBM API Connect](https://developer.ibm.com/apiconnect/) diff --git a/docs/images/MicroservicesMaturityMatrix.jpg b/docs/images/MicroservicesMaturityMatrix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e973330cf54d2a2c2b000bc4ebefe22fd4e80a2 GIT binary patch literal 64451 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 25503ef2..02f68cff 100644 --- a/docs/index.md +++ b/docs/index.md @@ -27,11 +27,12 @@ A curated list of awesome references collected since 2018. Microservices archite - [Open Container Initiative](https://www.opencontainers.org/) - [agilemethodology.org](http://agilemethodology.org/) - [agilemanifesto.org](http://agilemanifesto.org/) -- [12factor.net](https://12factor.net/) - [Are You 12-Factor Application Ready?](https://dzone.com/articles/are-you-12-factor-application-ready) +- [12factor.net](https://12factor.net/) - [Are You 12-Factor Application Ready?](https://dzone.com/articles/are-you-12-factor-application-ready) - [12-factor app infographic](https://dzone.com/whitepapers/the-12-factor-app-infographic) - [An illustrated guide to 12 Factor Apps 🌟](https://www.redhat.com/architect/12-factor-app) - [openpracticelibrary.com](https://openpracticelibrary.com/) - [roadmap.sh](https://roadmap.sh/) - [API Landscape](https://www.apidays.co/api-landscape) - [Stack Overflow Annual Developer Survey](https://insights.stackoverflow.com/survey) +- [Open Source Guides](https://opensource.guide/) ## Introduction - [From Java EE To Cloud Native. Microservice Architecture. Openshift VS Kubernetes](introduction.md) - [Microservices FAQ & Kubernetes Native](faq.md) @@ -120,12 +121,14 @@ A curated list of awesome references collected since 2018. Microservices archite - [Helm Kubernetes Tool](helm.md) - [Liquibase and Flyway](liquibase.md) - [redhat-cop: Openshift Applier](https://dzone.com/articles/gitops-with-openshift-applier) -- [Pulumi](pulumi.md) - [StackStorm](stackstorm.md) -- [Terraform & Packer](terraform.md) -- [Kubestack: Terraform GitOps Framework](https://www.kubestack.com/) - [Template-Free Kubernetes Configuration Customization with Kustomize](kustomize.md) - [Templating YAML with YAML Processors. Static Checking of Kubernetes YAML Files](yaml.md) + +## Infrastructure Management Tools +- [Pulumi](pulumi.md) +- [Terraform & Packer](terraform.md) +- [Kubestack: Terraform GitOps Framework](https://www.kubestack.com/) ## Databases on Kubernetes - [Relational Databases and Database DevOps. CrunchyData Postgres Operator 🌟](databases.md) - [NoSQL Databases](nosql.md) diff --git a/docs/introduction.md b/docs/introduction.md index da8ef98b..ff2277d3 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -77,6 +77,25 @@ * [getcortexapp.com: Why You Need a Microservices Catalog Tool](https://www.getcortexapp.com/post/why-you-need-a-microservices-catalog-tool) * [ringcentral.co.uk: Software as a Service (SaaS)](https://www.ringcentral.co.uk/gb/en/blog/definitions/software-as-a-service-saas/) * [levelup.gitconnected.com: Multi-Tenant Architecture](https://levelup.gitconnected.com/multi-tenant-architecture-8c1f597e069c) +* [shopify.engineering: Keeping Developers Happy with a Fast CI](https://shopify.engineering/faster-shopify-ci) +* [infoq.com: Saga Orchestration for Microservices Using the Outbox Pattern](https://www.infoq.com/articles/saga-orchestration-outbox/) +* [medium: A Design Analysis of Cloud-based Microservices Architecture at Netflix](https://medium.com/swlh/a-design-analysis-of-cloud-based-microservices-architecture-at-netflix-98836b2da45f) A comprehensive system design analysis of microservices architecture at Netflix to power its global video streaming services +* [analyticsinsight.net: Cloud Computing is the inevitable future of Data Analytics](https://www.analyticsinsight.net/cloud-computing-is-the-inevitable-future-of-data-analytics/) +* [dotnetcurry.com: Microservices Architecture Pattern 🌟](https://www.dotnetcurry.com/microsoft-azure/microservices-architecture) +* [geeksarray.com: Microservice Architecture Pattern for Architects 🌟](https://geeksarray.com/blog/microservice-architecture-pattern-for-architects) +* [zdnet.com: Multicloud deployments surge as Microsoft Azure duels with AWS](https://www.zdnet.com/google-amp/article/multicloud-deployments-surge-as-microsoft-azure-duels-with-aws/) All of the public cloud players are showing solid growth as the multicloud pie expands. Azure is closing the gap on AWS, but Google Cloud is making big inroads too. +* [blog.container-solutions.com: How Mature Is Your Microservices Architecture? 🌟](https://blog.container-solutions.com/how-mature-is-your-microservices-architecture) +* [techerati.com: Microservices in the Cloud-Native Era](https://www.techerati.com/features-hub/opinions/microservices-in-the-cloud-native-era/) +* [thenewstack.io: The Cloud Native Landscape: Platforms Explained](https://thenewstack.io/the-cloud-native-landscape-platforms-explained/) +* [thenewstack.io: Are Private Clouds Proliferating?](https://thenewstack.io/google-and-oracle-cloud-adoption-doubles-among-enterprises-3/) +* [thenewstack.io: Multicloud Challenges and Solutions](https://thenewstack.io/multicloud-challenges-and-solutions) +* [makeuseof.com: hich Container System Should You Use: Kubernetes or Docker?](https://www.makeuseof.com/kubernetes-or-docker/) Choosing a container system for is a straightforward choice between two systems. Should you choose Kubernetes or Docker? +* [infoworld.com: The decline of Heroku PaaS](https://www.infoworld.com/article/3614210/the-decline-of-heroku.html) +* [infoq.com: Principles for Microservice Design: Think IDEALS, Rather than SOLID](https://www.infoq.com/articles/microservices-design-ideals/) +* [thenewstack.io: The Scalability Myth](https://thenewstack.io/the-scalability-myth/) +* [thenewstack.io: The 4 Definitions of Multicloud: Part 1 — Data Portability](https://thenewstack.io/the-4-definitions-of-multicloud-part-1-data-portability/) +* [thenewstack.io: Multicloud Paves the Way for Cloud Native Resiliency Models](https://thenewstack.io/multicloud-paves-the-way-for-cloud-native-resiliency-models/) +* [techerati.com: Microservices in the Cloud-Native Era](https://www.techerati.com/features-hub/opinions/microservices-in-the-cloud-native-era/)
[![microservices infographic](images/microservices-infographic.png)](https://www.weave.works/technologies/going-cloud-native-6-essential-things-you-need-to-know) @@ -128,6 +147,7 @@ * [phoenixnap.com: Kubernetes vs OpenShift: Key Differences Compared 🌟](https://phoenixnap.com/blog/kubernetes-vs-openshift) * [crn.com: Red Hat CEO: We Have A ‘Head Start’ Over VMware, Competitors In Kubernetes](https://www.crn.com/slide-shows/cloud/red-hat-ceo-we-have-a-head-start-over-vmware-competitors-in-kubernetes) Red Hat CEO Paul Cormier speaks with CRN about the role IBM has played in Red Hat’s channel strategy, how the company has preserved its independence under Big Blue, and why Red Hat will win in the ultra-competitive Kubernetes market. * [redhat.com ebook: Red Hat OpenShift and Kubernetes ... what's the difference? 🌟](https://www.redhat.com/en/resources/openshift-and-kubernetes-whats-the-difference-ebook) +* [levelup.gitconnected.com: OpenShift — The Next Level of Kubernetes](https://levelup.gitconnected.com/openshift-the-next-level-of-kubernetes-6d58ad722b26) Things you should need to know about OpenShift ## Career Path - [Kelsey Hightower Fireside Chat: An Unconventional Path to IT and Some Life Advice](https://www.hashicorp.com/resources/kelsey-hightower-fireside-chat-an-unconventional-path-to-it-and-some-life-advice/?utm_source=linkedin) @@ -151,6 +171,8 @@ [![Openshift VS Kubernetes](images/openshift_vs_kubernetes.jpeg)](https://www.linkedin.com/feed/update/urn:li:activity:6459657167300583424) [![Kubernetes on its own is not enough](images/k8s-not-enough.jpg)](https://twitter.com/brendandburns) + +[![how mature is your microservices architecture](images/MicroservicesMaturityMatrix.jpg)](https://blog.container-solutions.com/how-mature-is-your-microservices-architecture)
diff --git a/docs/istio.md b/docs/istio.md index 0c657ea0..d6900a14 100644 --- a/docs/istio.md +++ b/docs/istio.md @@ -52,6 +52,15 @@ - [dzone: Istio Service Mesh, the Step-by-Step Guide, Part 1: Theory 🌟](https://dzone.com/articles/metadata-management-in-big-data-systems-a-complete-1) In Part 1, we go over the concepts behind Istio and Service Mesh, such as their architecture, how they function, and more. - [dzone: Istio Service Mesh, the Step-by-Step Guide, Part 2: Tutorial 🌟](https://dzone.com/articles/istio-service-mesh-the-step-by-step-guide-part-2-t) - [solo.io: The evolution of VM support in Istio 1.8 (with video)](https://www.solo.io/blog/the-evolution-of-vm-support-in-istio-1-8-with-video/) +- [jetstack.io: Securing Istio workloads with mTLS using cert-manager](https://www.jetstack.io/blog/cert-manager-istio-integration/) +- [thenewstack.io: Why Do You Need Istio When You Already Have Kubernetes? 🌟](https://thenewstack.io/why-do-you-need-istio-when-you-already-have-kubernetes) +- [medium: Managing Microservices With Istio Service Mesh in Kubernetes](https://medium.com/avmconsulting-blog/managing-microservices-with-istio-service-mesh-in-kubernetes-36e1fda81757) +- [thenewstack.io: Solo.io: Istio Is Winning the Service Mesh War](https://thenewstack.io/solo-io-istio-is-winning-the-service-mesh-war/) +- [dzone: vice Meshes: Why Istio? An Introduction](https://dzone.com/articles/why-istio-intro) There are 3 leading contenders in the cluster ecosystem for service mesh, all open source. We compare and discuss why Istio is the best choice in most scenarios. +- [tetrate.io: Why do you need Istio when you already have Kubernetes?](https://www.tetrate.io/blog/why-do-you-need-istio-when-you-already-have-kubernetes/) +- [learncloudnative.com: Attach multiple VirtualServices to Istio Gateway](https://learncloudnative.com/blog/2020-11-23-multiple-vs-gateway) +- [thenewstack.io: What Is Istio and Why Does Kubernetes Need it? 🌟](https://thenewstack.io/what-is-istio-and-why-does-kubernetes-need-it/) +- [youtube: Istio & Service Mesh - simply explained in 15 mins 🌟](https://www.youtube.com/watch?v=16fgzklcF7Y&ab_channel=TechWorldwithNana) ## Maistra Istio - [Maistra.io](https://maistra.io) @@ -66,6 +75,7 @@ - [github.com: kiali](https://github.com/kiali/kiali) - [medium.com: kiali project](https://medium.com/kialiproject) - [itnext.io: Find issues in your Istio mesh with Kiali](https://itnext.io/find-issues-in-your-istio-mesh-with-kiali-89d37d5e1fb1) +- [dzone: Deployment Monitoring Tools — Kiali](https://dzone.com/articles/kubernetes-deployment-monitoring-tools-kiali) A description of common issues with deployment monitoring, and a features list of Kiali and how to use it. ## Jaeger tracing. Open source, end-to-end distributed tracing - Monitor and troubleshoot transactions in complex distributed systems diff --git a/docs/java_frameworks.md b/docs/java_frameworks.md index 232eef7d..4321b1c9 100644 --- a/docs/java_frameworks.md +++ b/docs/java_frameworks.md @@ -29,6 +29,7 @@ * [advancedweb.hu: A categorized list of all Java and JVM features since JDK 8 to 14](https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-14/) * [JDK 15: The new features in Java 15](https://www.infoworld.com/article/3534133/jdk-15-the-new-features-in-java-15.html) Just-arrived update to standard Java features text blocks, hidden classes, the Z Garbage Collector, and previews of pattern matching and records. * [GitHub Welcomes the OpenJDK Project!](https://github.blog/2020-09-30-github-welcomes-the-openjdk-project/) +* [advancedweb.hu: A categorized list of all Java and JVM features since JDK 8 to 16](https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16/) ### Existing Java Implementations - [Oracle Java](https://www.oracle.com/technetwork/java/javase/overview/index.html) diff --git a/docs/jenkins-alternatives.md b/docs/jenkins-alternatives.md index 2d55f090..552d6e32 100644 --- a/docs/jenkins-alternatives.md +++ b/docs/jenkins-alternatives.md @@ -45,6 +45,7 @@ * [AWS DevOps - CICD](https://aws.amazon.com/devops/#cicd) * [Google Cloud Build](https://cloud.google.com/cloud-build) * [Azure DevOps](https://azure.microsoft.com/services/devops/) + * [k21academy.com: Azure pipelines VS Jenkins](https://k21academy.com/microsoft-azure/az-400/azure-pipelines-vs-jenkins/) * [Kubeflow](https://www.kubeflow.org/) The Machine Learning Toolkit for Kubernetes * [shuttleOps](https://www.shuttleops.io/) * [thenewstack.io: ShuttleOps: No-Code Docker and Kubernetes](https://thenewstack.io/shuttleops-no-code-docker-and-kubernetes/) @@ -53,6 +54,7 @@ * [onedev](https://github.com/theonedev/onedev) * [Hands-on GitOps with OneDev and Kubernetes](https://robinshen.medium.com/hands-on-gitops-with-onedev-f05bd278f07c) * [lambdatest.com: 21 Of The Best Jenkins Alternatives For Developers](https://www.lambdatest.com/blog/best-jenkins-alternatives/) +* [Screwdriver API](https://github.com/screwdriver-cd/screwdriver) Screwdriver is a self-contained, pluggable service to help you build, test, and continuously deliver software using the latest containerization technologies. ## Cloud Native CI/CD * [jenkins-x.io](https://jenkins-x.io/) @@ -60,6 +62,7 @@ * [devopstoolkitseries.com](https://www.devopstoolkitseries.com/) * [youtube: Jenkins X: The Recipe For Continuous Delivery](https://www.youtube.com/watch?v=ihHr-iLfEGo) * [Book: The DevOps 2.6 Toolkit: Jenkins X](https://leanpub.com/the-devops-2-6-toolkit) + * [Traces for your pipelines: Jenkins X v3 now comes with tracing support for your pipelines out of the box](https://jenkins-x.io/blog/2021/04/08/jx3-pipeline-trace/) * [spinnaker.io](https://www.spinnaker.io/) * [Deploy Spinnaker CD Pipelines in Kubernetes](https://www.opsmx.com/blog/deploy-spinnaker-cd-pipelines-in-kubernetes/) * [speakerdeck.com: Introduction to Spinnaker Managed Pipeline Templates](https://speakerdeck.com/keisukeyamashita/introduction-to-spinnaker-managed-pipeline-templates) @@ -67,6 +70,7 @@ * [medium: Spinnaker The Hard Way](https://medium.com/searce/spinnaker-the-hard-way-278913f3f1d8) * [opensource.com: Why Spinnaker matters to CI/CD](https://opensource.com/article/19/8/why-spinnaker-matters-cicd) Spinnaker provides unique building blocks to create tailor-made, and highly-collaborative continuous delivery pipelines. * [medium: How we rolled out our Kubernetes platform in Adevinta Spain](https://medium.com/adevinta-tech-blog/how-we-rolled-out-our-kubernetes-platform-in-adevinta-spain-63495884a1db) + * [harness.io: Best Spinnaker Alternatives to Consider](https://harness.io/blog/continuous-delivery/spinnaker-alternatives/) * [ArgoCD](https://argoproj.github.io/argo-cd/) Declarative GitOps CD for Kubernetes * [Cloud Native Computing Foundation Accepts Argo as an Incubator Project](https://www.intuit.com/blog/technology/cloud-native-computing-foundation-accepts-argo-as-an-incubator-project/) * [openshift.com: OpenShift Authentication Integration with ArgoCD](https://www.openshift.com/blog/openshift-authentication-integration-with-argocd) @@ -95,6 +99,7 @@ * [dzone: Jenkins vs GitLab CI: Battle of CI/CD Tools](https://dzone.com/articles/jenkins-vs-gitlab-ci-battle-of-cicd-tools) The battle of CI/CD tools rages on — come and find out which is the right tool for your DevOps testing needs. * [lambdatest.com: TeamCity vs. Jenkins: Picking The Right CI/CD Tool](https://www.lambdatest.com/blog/teamcity-vs-jenkins-picking-the-right-ci-cd-tool/) * [lambdatest.com: Bamboo vs Jenkins: Showdown Of CI/CD Tools](https://www.lambdatest.com/blog/bamboo-vs-jenkins-showdown-of-ci-cd-tools/) +* [blog.thundra.io: The CI/CD War of 2021: A Look at the Most Popular Technologies](https://blog.thundra.io/the-ci/cd-war-of-2021-a-look-at-the-most-popular-technologies) ## Integration with other CI/CD engines * [CloudBees Integrates Software Delivery Management Platform With Google Cloud Build and Tekton to Break Down Development Silos](https://www.previous.cloudbees.com/press/cloudbees-integrates-software-delivery-management-platform-google-cloud-build-and-tekton-break) diff --git a/docs/jenkins.md b/docs/jenkins.md index 119a0c40..75a41491 100644 --- a/docs/jenkins.md +++ b/docs/jenkins.md @@ -77,6 +77,13 @@ * [harness.io: Modernizing Jenkins CI/CD Pipelines](https://harness.io/blog/continuous-delivery/modernizing-jenkins-ci-cd-pipelines-with-harness/) * [jenkins.io: Docker image updates](https://www.jenkins.io/blog/2021/02/08/docker-base-os-upgrade/) * [blog.executeautomation.com: Running Jenkins Build Agent within Docker container – Part A](https://blog.executeautomation.com/running-jenkins-build-agent-within-docker-container-part-a/) Jenkins is one of the most popular CI/CD open source tool without any doubt. It has evolved so much in recent past that, the tool can be utilised with many modern way approach to build the application and deploy the application. Jenkins can be scaled with not just by installing different build agents in different machines, rather we can use the power of Docker containers to install agent and perform build operations effortlessly. +* [lambdatest.com: How To Set Up Continuous Integration With Git and Jenkins?](https://www.lambdatest.com/blog/how-to-setup-continuous-integration-with-git-jenkins/) +* [itnext.io: Jenkins: running workers in Kubernetes and Docker images build](https://itnext.io/jenkins-running-workers-in-kubernetes-and-docker-images-build-83299a10f3ca) +* [aws.amazon.com: How to cost optimize Jenkins jobs on Kubernetes with EC2 Spot Instances 🌟](https://aws.amazon.com/getting-started/hands-on/cost-optimize-jenkins/) +* [medium: CI/CD Pipeline of Jenkins Using Groovy Language With Monitoring on the Top of Kubernetes](https://medium.com/swlh/ci-cd-pipeline-of-jenkins-using-groovy-language-with-monitoring-on-the-top-of-kubernetes-b37f962fb0ac) +* [amazon.com: Building a serverless Jenkins environment on AWS Fargate](https://aws.amazon.com/es/blogs/devops/building-a-serverless-jenkins-environment-on-aws-fargate/) +* [youtube: How to Create a GitLab Multibranch Pipeline in Jenkins](https://www.youtube.com/watch?app=desktop&v=y4XGFluzPHY&ab_channel=CloudBeesTV) +* [lambdatest.com: Jenkins Tutorial 🌟](https://www.lambdatest.com/learning-hub/jenkins)
[![Jenkins Is The Way](images/Jenkins-is-the-Way.png)](https://jenkinsistheway.io) @@ -93,11 +100,13 @@ ### Kubernetes Native Jenkins Operator * [github.com/jenkinsci/kubernetes-operator: 🌟](https://github.com/jenkinsci/kubernetes-operator) Kubernetes platform was released ten years after the first version of Hudson project. It means Jenkins couldn’t be designed to run on top of it. Jenkins Operator tries to bridge that gap. +* [jenkins.io: Jenkins Operator becomes an official sub-project! ](https://www.jenkins.io/blog/2021/04/15/jenkins-operator-sub-project/) ## Groovy * [Wikipedia.org: Groovy](https://en.wikipedia.org/wiki/Apache_Groovy) * [Dzone: Introduction to Groovy](https://dzone.com/articles/introduction-groovy) * [Dzone refcard: Groovy, a Rapid-Development JVM Language](https://dzone.com/refcardz/groovy) +* [opensource.com: Read and write files with Groovy](https://opensource.com/article/21/4/groovy-io) ## Awesome Jenkins * [sahilsk/awesome-jenkins](https://github.com/sahilsk/awesome-jenkins) @@ -207,6 +216,8 @@ - In this session you learn the basics of picking good **SLIs & SLOs** and how to extract them from your monitoring tools. After this session you will be able to start implementing this integration yourself with Jenkins. To give you a jump start you will be introduced to the open source project [Keptn](https://www.keptn.sh) which provides **automated SLI/SLO-based quality gates**. Then we'll talk about [Keptn Jenkins Shared Library](https://github.com/keptn-sandbox/keptn-jenkins-library) which **integrates Jenkins and Keptn** with just a couple of function calls. - [youtube: Level-Up your Jenkins-based Delivery with Keptn](https://www.youtube.com/watch?v=VYRdirdjOAg&t=5s) - [thenewstack.io: How Keptn Automatically Configures Prometheus Ecosystems](https://thenewstack.io/how-keptn-automatically-configures-prometheus-ecosystems/) +- [github.com/keptn-sandbox/keptn-on-k3s: Tutorial: Keptn for Dynatrace Users in 5 Minutes 🌟](https://github.com/keptn-sandbox/keptn-on-k3s/blob/master/README-KeptnForDynatrace.md) - [Tutorial on keptnProject with argoproj for canary deployments using Dynatrace for SLO-based rollout control](https://github.com/keptn-sandbox/keptn-on-k3s/blob/master/README-KeptnForDynatrace.md#use-case-5-canary-rollouts-with-argo) +- [youtube: Tutorial - Keptn in a box](https://www.youtube.com/watch?v=OQAXQrKhIt0&ab_channel=keptn)
[![keptn](images/keptn-jenkins-sli-slo-1.jpg)](https://www.youtube.com/watch?v=GhEZLvc8B70) @@ -286,6 +297,8 @@ ## Jenkins Multibranch Pipeline - The [Multibranch Pipeline 🌟](https://www.jenkins.io/doc/book/pipeline/multibranch/) enable developer to implement different Jenkinsfiles for different branches of the same project. It’s can discover branches and execute pipeline automatically with Jenkinsfiles in version control for better management pipeline. +- [infracloud.io: Migrating Jenkins Freestyle Job to Multibranch Pipeline 🌟](https://www.infracloud.io/blogs/jenkins-freestyle-pipeline-migration/) +- [youtube: How to Create a Bitbucket Cloud Branch Source Multibranch Pipeline in Jenkins](https://www.youtube.com/watch?v=LNfthmZuRDI&ab_channel=CloudBeesTV) ### Multibranch Pipelines with Kubernetes - [Build CI/CD Multibranch Pipeline with Jenkins and Kubernetes 🌟](https://medium.com/@peiruwang/build-ci-cd-multibranch-pipeline-with-jenkins-and-kubernetes-637de560d55a) @@ -408,6 +421,7 @@ * [github.com/jenkinsci/github-autostatus-plugin](https://github.com/jenkinsci/github-autostatus-plugin) * [20 Jenkins Plugins You Can’t Live Without](https://caylent.com/jenkins-plugins) * [youtube - CloudBeesTV: Jenkins Performance: Avoiding Pitfalls, Diagnosing Issues & Scaling for Growth](https://www.youtube.com/watch?v=yTafQ-e84eY) +* [Jenkins opentelemetry-plugin 🌟](https://github.com/jenkinsci/opentelemetry-plugin) Publish Jenkins performances metrics to an OpenTelemetry endpoint, including distributed traces of job executions and health metrics of the controller. What if you could transform your jenkinsci pipeline into an observable transaction that can be analyzed using OpenTelemetry backends such as Elastic APM? Code analyzed via code? ## Externalizing Fingerprint Storage for Jenkins - New FingerprintStorage API to build external fingerprint storage plugins. diff --git a/docs/kubernetes-alternatives.md b/docs/kubernetes-alternatives.md index c1c49603..99658b15 100644 --- a/docs/kubernetes-alternatives.md +++ b/docs/kubernetes-alternatives.md @@ -5,6 +5,7 @@ - [Portainer](#portainer) - [Docker Enterprise and Docker Universal Control Plane (UCP)](#docker-enterprise-and-docker-universal-control-plane-ucp) - [Docker Swarm](#docker-swarm) +- [Simplenetes](#simplenetes) ## Why Not Use Kubernetes - [medium: Why Not Use Kubernetes?](https://medium.com/better-programming/why-not-use-kubernetes-52a89ada5e22) Is Kubernetes really right for your stack? @@ -24,6 +25,7 @@ * [autentia.com: Nomad vs. Kubernetes](https://www.autentia.com/2018/09/20/nomad-vs-kubernetes/) * [sysadmincasts.com: Nomad 🌟](https://sysadmincasts.com/episodes/74-nomad) * [blog.cloudflare.com: How we use HashiCorp Nomad (Cloudflare using Nomad and Consul)](https://blog.cloudflare.com/how-we-use-hashicorp-nomad/) +* [atodorov.me: Why you should take a look at Nomad before jumping on Kubernetes](https://atodorov.me/2021/02/27/why-you-should-take-a-look-at-nomad-before-jumping-on-kubernetes) ## Portainer * [Portainer](https://www.portainer.io/) Making Docker management easy @@ -44,6 +46,9 @@ * [kpatronas.medium.com: Docker swarm: High Availability](https://kpatronas.medium.com/docker-swarm-high-availability-36ea7ee7f9e8) * [semaphoreci.com: Kubernetes vs Docker: Understanding Containers in 2021](https://semaphoreci.com/blog/kubernetes-vs-docker) +## Simplenetes +* [Simplenetes](https://github.com/simplenetes-io/simplenetes) Alternative to Kubernetes written in pure Sh + ---
[![Kubernetes vs Docker Swarm](images/kubernetes-vs-dockerswarm.png)](https://www.cuelogic.com/blog/kubernetes-vs-docker-swarm) diff --git a/docs/kubernetes-client-libraries.md b/docs/kubernetes-client-libraries.md index 60993106..b9ace9ae 100644 --- a/docs/kubernetes-client-libraries.md +++ b/docs/kubernetes-client-libraries.md @@ -11,6 +11,7 @@ - [Part 2 — Using the Java client framework](https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-2-using-java-ceb8a5ff7920) - [Part 3 — Using the Python client framework](https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-3-using-python-aea5ab16f627) - [Part 4 — Using the Go client framework](https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-4-using-go-b1d0e3c1c899) +- [k8s-ruby: Kubernetes Ruby Client](https://github.com/k8s-ruby/k8s-ruby) ## Go Clients for Kubernetes - [kubernetes/client-go: Go client for Kubernetes 🌟](https://github.com/kubernetes/client-go) Go clients for talking to a kubernetes cluster. - [Rate Limiting in Controller-Runtime and Client-go](https://danielmangum.com/posts/controller-runtime-client-go-rate-limiting/) diff --git a/docs/kubernetes.md b/docs/kubernetes.md index 31359414..10dacece 100644 --- a/docs/kubernetes.md +++ b/docs/kubernetes.md @@ -1,4 +1,4 @@ -# Kubernetes +# Kubernetes. "Kubernetes is not for application development but for platform development" (Kelsey Hightower) - [Certified Kubernetes Offerings](#certified-kubernetes-offerings) - [Channel based messaging platform](#channel-based-messaging-platform) - [The State of Cloud-Native Development. Details data on the use of Kubernetes, serverless computing and more](#the-state-of-cloud-native-development-details-data-on-the-use-of-kubernetes-serverless-computing-and-more) @@ -96,6 +96,7 @@ - [Kubernetes Node Local DNS Cache](#kubernetes-node-local-dns-cache) - [Kubernetes Sidecars](#kubernetes-sidecars) - [Kubernetes Security](#kubernetes-security) + - [Encrypting the certificate for Kubernetes](#encrypting-the-certificate-for-kubernetes) - [RBAC](#rbac) - [Admission Control](#admission-control) - [Security Best Practices Across Build, Deploy, and Runtime Phases](#security-best-practices-across-build-deploy-and-runtime-phases) @@ -120,7 +121,6 @@ - [GKE vs EKS vs AKS](#gke-vs-eks-vs-aks) - [Other Managed Kubernetes](#other-managed-kubernetes) - [AWS EKS (Hosted/Managed Kubernetes on AWS)](#aws-eks-hostedmanaged-kubernetes-on-aws) - - [GCP and GKE](#gcp-and-gke) - [Kubesphere](#kubesphere) - [Tools for multi-cloud Kubernetes management](#tools-for-multi-cloud-kubernetes-management) - [On-Premise Production Kubernetes Cluster Installers](#on-premise-production-kubernetes-cluster-installers) @@ -147,6 +147,7 @@ - [Kontena Pharos](#kontena-pharos) - [Mirantis Docker Enterprise with Kubernetes and Docker Swarm](#mirantis-docker-enterprise-with-kubernetes-and-docker-swarm) - [Mirantis k0s](#mirantis-k0s) + - [K0s](#k0s) - [Cloud Development Kit (CDK) for Kubernetes](#cloud-development-kit-cdk-for-kubernetes) - [AWS Cloud Development Kit (AWS CDK)](#aws-cloud-development-kit-aws-cdk) - [SpringBoot with Docker](#springboot-with-docker) @@ -374,12 +375,90 @@ * [ronaknathani.com: How a Kubernetes Pod Gets an IP Address](https://ronaknathani.com/blog/2020/08/how-a-kubernetes-pod-gets-an-ip-address/) * [dustinspecker.com: iptables: How Kubernetes Services Direct Traffic to Pods](https://dustinspecker.com/posts/iptables-how-kubernetes-services-direct-traffic-to-pods/) * [medium: ConfigMaps in Kubernetes (K8s)](https://medium.com/faun/configmaps-in-kubernetes-k8s-2f2ce79d7e66) -* [learnk8s.io: Extending applications on Kubernetes with multi-container pods 🌟](https://learnk8s.io/sidecar-containers-patterns) +* [learnk8s.io: Extending applications on Kubernetes with multi-container pods 🌟](https://learnk8s.io/sidecar-containers-patterns) Can you change an application without changing any code in Kubernetes? You can when you use multiple containers in a single Pod. * [devopscube.com: 10 Key Considerations for Kubernetes Cluster Design & Setup 🌟](https://devopscube.com/key-considerations-kubernetes-cluster-design-setup/) * [sysdig.com: Kubernetes admission controllers in 5 minutes](https://sysdig.com/blog/kubernetes-admission-controllers/) * [blog.pixielabs.ai: Building Kubernetes Native SaaS applications: iterating quickly by deploying in-cluster data planes](https://blog.pixielabs.ai/hybrid-architecture/hybrid-architecture/) * [datacenterknowledge.com: The Pros and Cons of Kubernetes-Based Hybrid Cloud 🌟](https://www.datacenterknowledge.com/cloud/pros-and-cons-kubernetes-based-hybrid-cloud) * [itnext.io: CKS Exam Series #9 RBAC v2](https://itnext.io/cks-exam-series-9-rbac-v2-23ee24dd77cd) Kubernetes CKS Example Exam Question Series +* [dzone: Scale to Zero With Kubernetes with KEDA and/or Knative 🌟](https://dzone.com/articles/scale-to-zero-with-kubernetes) This article reviews how Kubernetes provides the platform capabilities for dynamic deployment, scaling, and management in Cloud-native applications. +* [elastisys.com: What do I need to add on top of Kubernetes?](https://elastisys.com/what-do-i-need-to-add-on-top-of-kubernetes/) +* [infoq.com: Experts Discuss Top Kubernetes Trends and Production Challenges](https://www.infoq.com/articles/kubernetes-trends-and-challenges/) +* [zhimin-wen.medium.com: Sticky Sessions in Kubernetes 🌟](https://zhimin-wen.medium.com/sticky-sessions-in-kubernetes-56eb0e8f257d) +* [maximilianmichels.com: Kubernetes in a Nutshell: 10 Things You Need to Know](https://maximilianmichels.com/2021/kubernetes-what-you-need-to-know/) +* [vamsitalkstech.com: Introduction to Kubernetes Multi-tenancy..(1/2)](https://www.vamsitalkstech.com/architecture/a-deepdive-into-kubernetes-multitenancy-1-2/) +* [vamsitalkstech.com: Kubernetes Multi-tenancy Best Practices & Architecture Model..(2/2)](https://www.vamsitalkstech.com/architecture/kubernetes-multitenancy-best-practices-architecture-models-2-2/) +* [itnext.io: Breaking down and fixing etcd cluster](https://itnext.io/breaking-down-and-fixing-etcd-cluster-d81e35b9260d) +* [brennerm.github.io: Kubernetes Overview Diagrams 🌟](https://brennerm.github.io/posts/kubernetes-overview-diagrams.html#architecture) +* [blog.appstack.one: How to run Ghost blog inside Kubernetes](https://blog.appstack.one/how-to-run-ghost-blog-inside-kubernetes/) +* [If you have a livenessProbe that takes over one second, it’ll fail when you update to kubernetes 1.20, because a long-standing bug with how the default was handled has been fixed. You must override the ExecProbeTimeout if your probe takes more than 1s](https://github.com/kubernetes/kubernetes/pull/97057) +* [thenewstack.io: Kubernetes Is Not Just About Containers — It’s About the API 🌟](https://thenewstack.io/kubernetes-is-not-just-about-containers-its-about-the-api/) +* [dzone refcard: Advanced kubernetes 🌟](https://dzone.com/refcardz/advanced-kubernetes) +* [dzone refcard: Kubernetes Multi-Cluster Management and Governance 🌟](https://dzone.com/refcardz/kubernetes-multi-cluster-management-and-governance) +* [tech2fun.net: Using Service Endpoints and Alias for accessing External Service in K8s](https://tech2fun.net/using-k8s-service-resource-for-enabling-clients-discovering-talking-to-pods/) +* [learnk8s.io: Scaling Celery workers with RabbitMQ on Kubernetes 🌟](https://learnk8s.io/scaling-celery-rabbitmq-kubernetes) In this article, you will explore how to use Kubernetes and KEDA to scale Celery workers based on the number of messages in a RabbitMQ queue. + 1. Learn how to set up a metrics pipeline + 2. How you can drive autoscaling based on metrics from RabbitMQ. + 3. Why KEDA might be an alternative to prometheus+adapters +* [cloudsavvyit.com: How Does Kubernetes Work?](https://www.cloudsavvyit.com/10110/how-does-kubernetes-work/) +* [github.com/PacktPublishing: Kubernetes in Production Best Practices](https://github.com/PacktPublishing/Kubernetes-in-Production-Best-Practices) +* [arabitnetwork.com: K8S – Enabling Auditing Logs | Step-by-Step](https://arabitnetwork.com/2021/03/13/k8s-enabling-auditing-logs-step-by-step/) +* [thenewstack.io: Kubernetes Lifecycle Management! So Important! (Day 0, Day 1, Day 2) 🌟](https://thenewstack.io/kubernetes-lifecycle-management-so-important-what-does-it-mean) +* [kruyt.org: Migrate from Docker to Containerd in Kubernetes](https://kruyt.org/migrate-docker-containerd-kubernetes) +* [lemoncode.net: Hola Kubernetes: Definiciones 🌟](https://lemoncode.net/lemoncode-blog/2021/3/17/hola-kubernetes-definiciones) +* [superuser.openstack.org: Run Your Kubernetes Cluster on OpenStack in Production](https://superuser.openstack.org/articles/run-your-kubernetes-cluster-on-openstack-in-production/) +* [medium: How to deploy StatefulSets in Kubernetes (K8s)?](https://medium.com/avmconsulting-blog/deploying-statefulsets-in-kubernetes-k8s-5924e701d327) +* [sandeepbaldawa.medium.com: K8s Labels & Selectors 🌟](https://sandeepbaldawa.medium.com/k8s-labels-selectors-9ad2fcf78a4e) In this post, we will look at What Kubernetes(K8s) Labels and Selectors are, Why do we need them, How to use them. +* [developers.redhat.com: Using Dekorate to generate Kubernetes manifests for Java applications 🌟](https://developers.redhat.com/blog/2021/03/17/using-dekorate-to-generate-kubernetes-manifests-for-java-applications/) + * [dekorate.io 🌟](http://dekorate.io/) +* [thenucleargeeks.com: Introduction to Kubernetes Pods](https://thenucleargeeks.com/2021/03/22/introduction-to-pods-in-kubernetes/) +* millionvisit.blogspot.com: Kubernetes for Developers Journey 🌟: + * [millionvisit.blogspot.com: Kubernetes for Developers #1: Kubernetes Architecture and Features](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-1-kubernetes-architecture.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #2: Kubernetes for Local Development](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-2-Local-development.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #3: kubectl CLI](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-3-kubectl-cli.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #4: Enable kubectl bash autocompletion](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-4-kubectl-autocompletion.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #5: Kubernetes Web UI Dashboard](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-5-webui-dashboard.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #6: Kubernetes Objects](http://millionvisit.blogspot.com/2020/12/kubernetes-for-developers-6-KubernetesObjects.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #7: Imperative vs. Declarative Kubernetes Objects](http://millionvisit.blogspot.com/2021/01/kubernetes-for-developers-7-imperative-vs-Declarative.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #8: Kubernetes Object Name, Labels, Selectors and Namespace](http://millionvisit.blogspot.com/2021/02/kubernetes-for-developers-8-Object%20Name-Labels-Selectors-Namespace.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #9: Kubernetes Pod Lifecycle](http://millionvisit.blogspot.com/2021/03/kubernetes-for-developers-9-Kubernetes-Pod-Lifecycle.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #10: Kubernetes Pod YAML manifest in-detail ](http://millionvisit.blogspot.com/2021/03/kubernetes-for-developers-10-kubernetes-Pod-YAML-manifest.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #11: Pod Organization using Labels](http://millionvisit.blogspot.com/2021/03/kubernetes-for-developers-11-pod-organization-using-labels.html) + * [millionvisit.blogspot.com: Kubernetes for Developers #12: Effective way of using K8 Liveness Probe](http://millionvisit.blogspot.com/2021/04/kubernetes-for-developers-12-effective-way-of-using-k8-liveness-probe.html) +* [thenewstack.io: Scaling Microservices on Kubernetes 🌟](https://thenewstack.io/scaling-microservices-on-kubernetes) +* [andrewlock.net: Series: Deploying ASP.NET Core applications to Kubernetes 🌟](https://andrewlock.net/series/deploying-asp-net-core-applications-to-kubernetes/) + * [andrewlock.net: Deploying ASP.NET Core applications to Kubernetes - Part 6 - Adding health checks with Liveness, Readiness, and Startup probes 🌟](https://andrewlock.net/deploying-asp-net-core-applications-to-kubernetes-part-6-adding-health-checks-with-liveness-readiness-and-startup-probes/) +* [infoq.com: The Evolution of Distributed Systems on Kubernetes](https://www.infoq.com/articles/distributed-systems-kubernetes) +* [cloud.ibm.com: Tutorial - Scalable webapp 🌟](https://cloud.ibm.com/docs/solution-tutorials?topic=solution-tutorials-scalable-webapp-kubernetes) +* [hackernoon.com: The Ultimate Beginners Guide To Kubernetes and Container Orchestration](https://hackernoon.com/the-ultimate-beginners-guide-to-kubernetes-and-container-orchestration-5d83354y) +* [thenucleargeeks.com: Taints and Tolerations in Kubernetes](https://thenucleargeeks.com/2021/03/28/taints-and-tolerations-in-kubernetes/) +* [fosstechnix.com: Rolling out and Rolling back updates with Zero Downtime on Kubernetes Cluster 🌟](https://www.fosstechnix.com/rolling-out-and-rolling-back-updates-with-zero-downtime-on-kubernetes-cluster/) +* [rcarrata.github.io: Regenerating Kubeconfig for system:admin user in OpenShift clusters 🌟](https://rcarrata.github.io/openshift/regenerate-kubeconfig/) You missed your kubeconfig file of your OpenShift cluster? Your dog ate your kubeconfig file? No worries! Let’s regenerate it in a easy and automated way! +* [medium: Kubernetes — Difference between Deployment and StatefulSet in K8s](https://medium.com/devops-mojo/kubernetes-difference-between-deployment-and-statefulset-in-k8s-deployments-vs-statefulsets-855f9e897091) +* [github.com/dvob/k8s-s2s-auth: Kubernetes Service Accounts 🌟](https://github.com/dvob/k8s-s2s-auth) Service accounts are well known in Kubernetes to access the Kubernets API from within the cluster. This is often used for infrastructure components like operators and controllers. But we can also use service accounts to implement authentication in our own applications. This README tries to give an overview on how service accounts work and and shows a couple of variants how you can use them for authentication. Further this repository contains an example Go service which shows how to implement the authentication in an application. +* [medium: Jobs & Cronjobs in Kubernetes Cluster](https://medium.com/avmconsulting-blog/jobs-cronjobs-in-kubernetes-cluster-d0e872e3c8c8) +* [devopscube.com: How To Create Kubernetes Jobs/Cron Jobs – Getting Started Guide](https://devopscube.com/create-kubernetes-jobs-cron-jobs/) +* [speakerdeck.com: Kubernetes Pod internals with the fundamentals of Containers 🌟](https://speakerdeck.com/devinjeon/kubernetes-pod-internals-with-the-fundamentals-of-containers) +* [thenewstack.io: Avoiding the Pitfalls of Multitenancy in Kubernetes](https://thenewstack.io/avoiding-the-pitfalls-of-multitenancy-in-kubernetes/) +* [zhimin-wen.medium.com: Sticky Sessions in Kubernetes](https://zhimin-wen.medium.com/sticky-sessions-in-kubernetes-56eb0e8f257d) +* [medium: Graceful shutdown of fpm and nginx in Kubernetes](https://medium.com/inside-personio/graceful-shutdown-of-fpm-and-nginx-in-kubernetes-f362369dff22) +* [medium: Kubernetes Fundamentals For Absolute Beginners: Architecture & Components](https://medium.com/the-programmer/kubernetes-fundamentals-for-absolute-beginners-architecture-components-1f7cda8ea536) +* [devopscube.com: How To Create Kubernetes Service Account For API Access](https://devopscube.com/kubernetes-api-access-service-account/) +* [bsucaciu.com: What is a Sidecar?](https://www.bsucaciu.com/architecture/what-is-a-sidecar/) +* [thenewstack.io: Scaling Microservices on Kubernetes 🌟](https://thenewstack.io/scaling-microservices-on-kubernetes/) +* [fairwinds.com: Over-Provisioned and Over-Permissioned Containers & Kubernetes](https://www.fairwinds.com/blog/over-provisioned-and-over-permissioned-containers-kubernetes) +* [learn.hashicorp.com: Integrate a Kubernetes Cluster with an External Vault 🌟](https://learn.hashicorp.com/tutorials/vault/kubernetes-external-vault) +* [kubernetes.io: PodSecurityPolicy Deprecation: Past, Present, and Future 🌟](https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/) +* [betterprogramming.pub: How to Implement Your Distributed Filesystem With GlusterFS And Kubernetes](https://betterprogramming.pub/how-to-implement-your-distributed-filesystem-with-glusterfs-and-kubernetes-83ee7f5f834f) Learn the advantages of using GlusterFS and how can it help in achieving a highly-scalable, distributed filesystem. +* [compliantkubernetes.io: Compliant Kubernetes is a Certified Kubernetes distribution, that complies with: HIPAA, GDPR, PCI DSS, FFFS 2014:7, ISO 27001, etc. 🌟](https://compliantkubernetes.io) +* [blog.gopaddle.io: Strange things you never knew about Kubernetes ConfigMaps on day one 🌟](https://blog.gopaddle.io/2021/04/01/strange-things-you-never-knew-about-kubernetes-configmaps-on-day-one/) +* [medium: Scaling Kubernetes with Assurance at Pinterest](https://medium.com/pinterest-engineering/scaling-kubernetes-with-assurance-at-pinterest-a23f821168da) +* [platform9.com: Kubernetes Cluster Sizing – How Large Should a Kubernetes Cluster Be? 🌟](https://platform9.com/blog/kubernetes-cluster-sizing-how-large-should-a-kubernetes-cluster-be/) +* [learnsteps.com: What is a control plane? Basics on Kubernetes](https://www.learnsteps.com/what-is-a-control-plane-what-do-people-mean-by-this-basics-on-kubernetes/) +* [infoworld.com: No one wants to manage Kubernetes anymore 🌟](https://www.infoworld.com/article/3614850/no-one-wants-to-manage-kubernetes-anymore.html) The availability of solid and varied managed kubernetes options has seen more and more companies shy away from managing their own clusters. +* [dzone: Introduction To Kubernetes 🌟](https://dzone.com/articles/introduction-to-kubernetes-part-1) An orchestration tool takes care of provisioning and deployment, allocation of resources, load balancing, and many other important aspects of any system. +* [fairwinds.com: Never Should You Ever In Kubernetes: #1 Do K8S The Hard Way](https://www.fairwinds.com/blog/never-should-you-ever-in-kubernetes-1-do-k8s-the-hard-way) +* [blog.flant.com: How we enjoyed upgrading a bunch of Kubernetes clusters from v1.16 to v1.19](https://blog.flant.com/how-we-enjoyed-upgrading-kubernetes-clusters-from-v1-16-to-v1-19/)
[![Kubernetes architecture](images/kubernetes-pod-creation.png)](https://www.padok.fr/en/blog/kubernetes-architecture-clusters) @@ -389,6 +468,8 @@ [![5 Open-source projects that make #Kubernetes even better](images/five-oss-projects-kubernetes.jpg){: style="width:80%"}](https://enterprisersproject.com/article/2020/5/kubernetes-5-open-source-projects-improve) [![kubernetes arch multicloud hybrid](images/kubernetes_architecture_multicloud_hybride.jpg){: style="width:70%"}](https://www.journaldunet.com/web-tech/cloud/1492047-comment-kubernetes-perce-les-frontieres-du-cloud/) + +

@@ -404,6 +485,16 @@ * [thenewstack.io: Kubernetes 1.20 Lands with 44 Enhancements](https://thenewstack.io/kubernetes-1-20-lands-with-44-enhancements/) * [thenewstack.io: Kubernetes 1.20 Enhances the Operator Experience and Brings New Features to the Container Runtime](https://thenewstack.io/kubernetes-1-20-enhances-the-operator-experience-and-brings-new-features-to-the-container-runtime/) * [openshift.com: Kubernetes is Removing Docker Support, Kubernetes is Not Removing Docker Support](https://www.openshift.com/blog/kubernetes-is-removing-docker-support-kubernetes-is-not-removing-docker-support) +* [sysdig.com: What’s new in Kubernetes 1.21?](https://sysdig.com/blog/whats-new-kubernetes-1-21/) +* [devopscube.com: Kubernetes v1.21 Released: Here is What you should know](https://devopscube.com/kubernetes-v1-21-released/) +* [thenewstack.io: Kubernetes 1.21 Brings a New Memory Manager, More Flexible Scheduling](https://thenewstack.io/kubernetes-1-21-brings-a-new-memory-manager-more-flexible-scheduling/) +* [kubernetes.io: kubernetes 1.21: CronJob Reaches GA](https://kubernetes.io/blog/2021/04/09/kubernetes-release-1.21-cronjob-ga/) +* [kubernetes.io: Kubernetes 1.21: Power to the Community](https://kubernetes.io/blog/2021/04/08/kubernetes-1-21-release-announcement/) +* [devclass.com: Kubernetes 1.21 unloads pod security, adds dual IPv4/IPv6 networking, and shuts down gracefully](https://devclass.com/2021/04/09/kubernetes-1-21-unloads-pod-security-adds-dual-ipv4-ipv6-networking-and-shuts-down-gracefully/) +* [kubernetes.io: Introducing Suspended Jobs in Kubernetes 1.21](https://kubernetes.io/blog/2021/04/12/introducing-suspended-jobs/) +* [analyticsindiamag.com: Kubernetes v1.21 Released: Major Updates & Latest Features](https://analyticsindiamag.com/kubernetes-v1-21-released-major-updates-latest-features/) +* [openshift.com: Kubernetes 1.21 Grows Innovative New Features](https://www.openshift.com/blog/kubernetes-1.21-grows-innovative-new-features) +* [Kubernetes v1.16 API deprecation testing](https://gist.github.com/jimangel/0014770713cdca8b363816930ef2520f) Examples of how to test the impact of the v1.16 API deprecations and ways to debug early! ### Namespaces * [qvault.io: How to Restart All Pods in a Kubernetes Namespace 🌟](https://qvault.io/2020/10/26/how-to-restart-all-pods-in-a-kubernetes-namespace/) @@ -418,7 +509,9 @@ * [wideops.com: Kubernetes best practices: Setting up health checks with readiness and liveness probes](https://wideops.com/kubernetes-best-practices-setting-up-health-checks-with-readiness-and-liveness-probes/) * [containerjournal.com: 10 Best Practices Worth Implementing to Adopt Kubernetes](https://containerjournal.com/topics/container-management/10-best-practices-worth-implementing-to-adopt-kubernetes/) * [medium: Kubernetes Tip: How Does OOMKilled Work?](https://medium.com/tailwinds-navigator/kubernetes-tip-how-does-oomkilled-work-ba71b135993b) - +* [cloud.google.com: Kubernetes Best Practices 🌟](https://cloud.google.com/blog/topics/kubernetes-best-practices) A collection of blog posts aimed at guide you through the Kubernetes best practices +* [releasehub.com: Kubernetes Health Checks - 2 Ways to Improve Stability in Your Production Applications](https://releasehub.com/blog/kubernetes-health-checks-2-ways-to-improve-stability) + ### Disruptions - [thenewstack.io: Kubernetes: Use PodDisruptionBudgets for Application Maintenance and Upgrades](https://thenewstack.io/kubernetes-use-poddisruptionbudgets-for-application-maintenance-and-upgrades/) @@ -434,12 +527,15 @@ #### kubecost - [How to track costs in multi-tenant Amazon EKS clusters using Kubecost 🌟](https://aws.amazon.com/blogs/containers/how-to-track-costs-in-multi-tenant-amazon-eks-clusters-using-kubecost/) - [infracloud.io: Kubernetes Cost Reporting using Kubecost 🌟](https://www.infracloud.io/blogs/kubernetes-cost-reporting-using-kubecost/) +- [github.com/kubecost: kubecost-exporter - Running Kubecost as a Prometheus metric exporter 🌟](https://github.com/kubecost/cost-model/blob/develop/kubecost-exporter.md) +- [blog.kubecost.com: Kubecost raises $5.5 million to help teams monitor and reduce their Kubernetes spend](http://blog.kubecost.com/blog/announcing-kubecost-first-round/) ### Kubernetes Resource and Capacity Management * [itnext.io: Kubernetes Resource Management in Production 🌟](https://itnext.io/kubernetes-resource-management-in-production-d5382c904ed1) Requests, Limits, Overcommitment, Slack/Waste, Throttling * [medium: Ultimate Kubernetes Resource Planning Guide 🌟](https://medium.com/dev-genius/ultimate-kubernetes-resource-planning-guide-449a4fddd1d6) * [learnk8s.io: Setting the right requests and limits in Kubernetes 🌟](https://learnk8s.io/setting-cpu-memory-limits-requests) - +* [openshift.com: Sizing Applications in Kubernetes 🌟](https://www.openshift.com/blog/sizing-applications-in-kubernetes) + ### Kubernetes Monitoring * [medium: Kubernetes Monitoring: Kube-State-Metrics](https://medium.com/@chrisedrego/kubernetes-monitoring-kube-state-metrics-df6546aea324) * [Kubernetes Monitoring 101 — Core pipeline & Services Pipeline 🌟](https://levelup.gitconnected.com/kubernetes-monitoring-101-core-pipeline-services-pipeline-a34cd4cc9627) @@ -450,6 +546,7 @@ * [sysdig.com: How to monitor Kubernetes control plane 🌟](https://sysdig.com/blog/monitor-kubernetes-control-plane/) * [thenewstack.io: 12 Critical Kubernetes Health Conditions You Need to Monitor 🌟](https://thenewstack.io/12-critical-kubernetes-health-conditions-you-need-to-monitor/) * [devopscurry.com: Best Open-Source Monitoring Tools for Kubernetes in 2021 🌟](https://devopscurry.com/best-open-source-monitoring-tools-for-kubernetes-in-2021/) +* [circonus.com: 12 Critical Kubernetes Health Conditions You Need to Monitor and Why](https://www.circonus.com/2020/12/12-critical-kubernetes-health-conditions-you-need-to-monitor-and-why/) #### Logging in Kubernetes - [cncf.io: Logging in Kubernetes: EFK vs PLG Stack 🌟](https://www.cncf.io/blog/2020/07/27/logging-in-kubernetes-efk-vs-plg-stack/) @@ -587,9 +684,13 @@ kubectl get secret --namespace= -o yaml | sed ‘s/names - [ordina-jworks.github.io: A comparison of Kubernetes clients and dashboards](https://ordina-jworks.github.io/cloud/2020/08/28/kubernetes-clients-comparison.html) - [loft.sh: Kubernetes Development Environments – A Comparison](https://loft.sh/blog/kubernetes-development-environments-comparison/) - [yitaek.medium.com: Useful Tools for Better Kubernetes Development 🌟](https://yitaek.medium.com/useful-tools-for-better-kubernetes-development-87820c2b9435) Lens, Polaris, kube-hunter, kube-bench, Trivy, Goldilocks, Kyverno, kube-ps1, kubectx + kubens , krew, kubectl-neat, kube-no-trouble, helm-mapkubeapis, kube-diff + helm-diff , kube forwarder, kubecost, kubespy. -- [kccncna20.sched.com: A Walk Through the -Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-the-kubernetes-ui-landscape-joaquim-rocha-kinvolk-henning-jacobs-zalando-se) Working with Kubernetes clusters and workloads can be overwhelming, both for operators, as well as application developers. While kubectl is the de-facto standard interface to interact with Kubernetes' API, a graphical user interface can provide a better experience for newcomers and advanced users alike. This talk will look at the current landscape of Open Source Kubernetes web and desktop UIs, including Kubernetes Dashboard, Lens, Octant, Kubernetes Web View, and Headlamp. Particularly, how different dashboards are built, for what purpose they can be used, and how they compare in terms of functionality, so attendees can get the most out of the vast landscape of Kubernetes UIs. +- [kccncna20.sched.com: A Walk Through the Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-the-kubernetes-ui-landscape-joaquim-rocha-kinvolk-henning-jacobs-zalando-se) Working with Kubernetes clusters and workloads can be overwhelming, both for operators, as well as application developers. While kubectl is the de-facto standard interface to interact with Kubernetes' API, a graphical user interface can provide a better experience for newcomers and advanced users alike. This talk will look at the current landscape of Open Source Kubernetes web and desktop UIs, including Kubernetes Dashboard, Lens, Octant, Kubernetes Web View, and Headlamp. Particularly, how different dashboards are built, for what purpose they can be used, and how they compare in terms of functionality, so attendees can get the most out of the vast landscape of Kubernetes UIs. - [PDF](https://static.sched.com/hosted_files/kccncna20/02/A%20Walk%20Through%20the%20Kubernetes%20UI%20Landscape%20%28KubeCon%20Talk%202020%29.pdf) +- [tilt.dev 🌟](https://tilt.dev) You can use Tilt to easily build and run your application on Kubernetes. In comparison with similar tools, it provides [UI for managing the process and cloud platform](https://cloud.tilt.dev) to share data with your team. +- [microcks.io 🌟](https://microcks.io) K8s-based API mock/test tool. + - [microcks.io: Podman Compose support in Microcks](https://microcks.io/blog/podman-compose-support) +- [kinvolk.io: Shining a light on the Kubernetes User Experience with Headlamp](https://kinvolk.io/blog/2020/11/shining-a-light-on-the-kubernetes-user-experience-with-headlamp/) +- [kubevious](https://github.com/kubevious/kubevious) ### Okteto local kubernetes development - [okteto.com: How to Develop and Debug Java Applications on Kubernetes](https://okteto.com/blog/how-to-develop-java-apps-in-kubernetes/) @@ -622,6 +723,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * Autoscaling Nodes/Infrastructure * [blog.scaleway.com: Understanding Kubernetes Autoscaling](https://blog.scaleway.com/understanding-kubernetes-autoscaling/) * [infracloud.io: Kubernetes Autoscaling with Custom Metrics (updated) 🌟](https://www.infracloud.io/blogs/kubernetes-autoscaling-custom-metrics/) +* [sysdig.com: Kubernetes pod autoscaler using custom metrics](https://sysdig.com/blog/kubernetes-autoscaler/) ### Cluster Autoscaler Kubernetes Tool * [kubernetes.io: Cluster Management - **Resizing a cluster**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#resizing-a-cluster) @@ -671,6 +773,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t ### Kubernetes Load Testing and High Load Tuning - [itnext.io: Kubernetes: load-testing and high-load tuning — problems and solutions](https://itnext.io/kubernetes-load-testing-and-high-load-tuning-problems-and-solutions-244d869a9791) +- [engineering.zalando.com: Building an End to End load test automation system on top of Kubernetes](https://engineering.zalando.com/posts/2021/03/building-an-end-to-end-load-test-automation-system-on-top-of-kubernetes.html) Learn how we built an end-to-end load test automation system to make load tests a routine task. ## Extending Kubernetes ### Adding Custom Resources. Extending Kubernetes API with Kubernetes Resource Definitions. CRD vs Aggregated API @@ -694,6 +797,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t ### Krew, a plugin manager for kubectl plugins * [Krew 🌟](https://krew.sigs.k8s.io/) is the plugin manager for kubectl command-line tool. * [itnext.io: Extending Kubernetes Cluster; Kubectl Plugins and Krew](https://itnext.io/extending-kubernetes-cluster-kubectl-plugins-and-krew-547a8bc839a3) +* [darumatic.com: Improve Kubectl Command with Krew 🌟](https://darumatic.com/blog/improve_kubectl_command_with_krew) Krew is a tool that aims to ease plugin discovery, installation, upgrade, and removal on multiple operating systems. This article will show you how easy it is to grab and experiment with existing plugins. * kubectl trace is now on the krew index!! Go install it now! ```bash kubectl krew install trace @@ -843,84 +947,95 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [kubewatch 🌟🌟](https://hub.docker.com/r/bitnami/kubewatch) * [Espiando a tu kubernetes con kubewatch](https://bluetab.net/wp-content/uploads/2020/09/Blog.html) * [node-policy-webhook](https://github.com/softonic/node-policy-webhook) is a Kubernetes webhook designed to help you handle tolerations, nodeSelector and nodeAffinity. -- [kubeonoff](https://github.com/GambitResearch/kubeonoff) is a simple web UI for managing Kubernetes deployments. -- [ipvs-node-controller](https://github.com/kakao/ipvs-node-controller) is the kubernetes controller that solves External-IP (Load Balancer IP) issue with IPVS proxy mode. -- [kubeonoff](https://github.com/GambitResearch/kubeonoff) A simple web UI for managing Kubernetes deployments. Kubeonoff is a small web UI that allows to quickly stop/start/restart pods. Basically it's for non-developers to manage k8s objects per namespace. -- [Maistra 🌟](https://maistra.io/) is an opinionated distribution of Istio designed to work with Openshift. It combines Kiali, Jaeger, and Prometheus into a platform managed according to the OperatorHub lifecycle. -- [custom-pod-autoscaler](https://github.com/jthomperoo/custom-pod-autoscaler) A Custom Pod Autoscaler is a Kubernetes autoscaler that is customised and user created. The Custom Pod Autoscaler framework allows easier and faster development of Kubernetes autoscalers. -- [Kubevol 🌟](https://github.com/bmaynard/kubevol) allows you to audit all your Kubernetes pods for an attached volume or see all the volumes attached to each pod by a specific type (eg: ConfigMap, Secret). -- [kubectl-fuzzy 🌟](https://github.com/d-kuro/kubectl-fuzzy) uses fzf(1)-like fuzzy-finder to do partial or fuzzy search of Kubernetes resources. Instead of specifying full resource names to kubectl commands, you can choose them from an interactive list that you can filter by typing a few characters. -- [Setec 🌟](https://github.com/anthonysterling/setec) Setec (pronounced see-tek) is a utility tool that encrypts and decrypts secrets that are managed by Bitnami's Sealed Secrets. -- [Kompose (Kubernetes + Compose) 🌟](https://github.com/kubernetes/kompose) kompose is a tool to help users who are familiar with docker-compose move to Kubernetes. kompose takes a Docker Compose file and translates it into Kubernetes resources. kompose is a convenience tool to go from local Docker development to managing your application with Kubernetes. Transformation of the Docker Compose format to Kubernetes resources manifest may not be exact, but it helps tremendously when first deploying an application on Kubernetes. -- [kalm.dev 🌟](https://kalm.dev/) Easily deploy and manage applications on Kubernetes. Get what you want out of Kubernetes without having to write and maintain a ton of custom tooling. Deploy apps, handle requests, and hook up CI/CD, all through an intuitive web interface. -- [Kev](https://github.com/appvia/kev) Develop Kubernetes apps iteratively with Docker-Compose. Kev helps developers port and iterate Docker Compose apps onto Kubernetes. It understands the Docker Compose application topology and prepares it for deployment in (multiple) target environments, with minimal user input. We leverage the Docker Compose specification and allow for target-specific configurations to be applied to each component of the application stack, simply. -- [Synator Kubernetes Secret and ConfigMap synchronizer 🌟](https://github.com/TheYkk/synator) Synator synchronize your Secrets and ConfigMaps with your desired namespaces -- [kubes 🌟](https://github.com/boltops-tools/kubes) is a Kubernetes Deployment Tool. It builds the docker image, creates the Kubernetes YAML, and runs kubectl apply. -- [Kubernetes DaemonSet that enables a direct shell on each Node using SSH to localhost](https://gist.github.com/xandout/8d24558c75c53f3cb8bf0a97ec25fcfc) Learn how you can use a DaemonSet to expose an SSH shell on each node of your cluster (even if you don't have SSH installed). I run several K8S cluster on EKS and by default do not setup inbound SSH to the nodes. Sometimes I need to get into each node to check things or run a one-off tool. Rather than update my terraform, rebuild the launch templates and redeploy brand new nodes, I decided to use kubernetes to access each node directly. -- [NS Killer](https://github.com/germainlefebvre4/ns-killer) A Kubernetes project to kill all namespace living over X times. Quite useful when auto-generated development environments on the fly and give them a lifecycle out-of-the-box from Kubernetes or even Helm. You might find it useful if auto-generate development environments on the fly and want to remove old ones on a schedule. -- [kubeswitch: Kubernetes Version Switcher 🌟](https://github.com/steamhaus/kubeswitch) Easily switch kubectl binary versions. -- [Move2Kube 🌟](https://github.com/konveyor/move2kube) a tool that can help users migrate from Cloud Foundry and Docker Swarm to Kubernetes. Move2Kube is a command-line tool that accelerates the process of re-platforming to Kubernetes/Openshift. It does so by analysing the environment and source artifacts, and asking guidance from the user when required. -- [kubectl build (formerly known as kubectl-kaniko)](https://github.com/kvaps/kubectl-build) Kubectl build mimics the kaniko executor, but performs building on your Kubernetes cluster side. This allows you to simply build your local dockerfiles remotely without leaving your cozy environment. -- [Kubei 🌟](https://github.com/Portshift/Kubei) is a vulnerabilities scanning tool that allows users to get an accurate and immediate risk assessment of their kubernetes clusters. Kubei scans all images used in a Kubernetes cluster including images of application pods and system pods -- [Shell-operator](https://github.com/flant/shell-operator) is a tool for running event-driven scripts in a Kubernetes cluster. Shell-operator provides an integration layer between Kubernetes cluster events and shell scripts. -- [sinker is a tool to sync images from one container registry to another](https://github.com/plexsystems/sinker) This is useful in cases when you rely on images that exist in a public container registry, but need to pull from a private registry. -- [ecrcp](https://github.com/bit-cloner/ecrcp) aims to mimic cp command in Linux systems as closely as possible in its implementation. Consider ecrcp to be the cp equivalent to copy container images from docker hub to ECR. -- [Checkov 🌟](https://github.com/bridgecrewio/checkov/) is a static code analysis tool for infrastructure-as-code. It scans cloud infrastructure provisioned using Terraform, Cloudformation, Kubernetes, Serverless or ARM Templates and detects security and compliance misconfigurations. -- [Cluster Cloner 🌟](https://github.com/doitintl/clustercloner/) Reads the Kubernetes clusters in one location (optionally filtering by labels) and clones them into another (or just outputs JSON as a dry run), to/from AWS, GCP, and Azure. -- [kubectl-eksporter 🌟](https://github.com/Kyrremann/kubectl-eksporter) A simple Ruby-script to export k8s resources, and removes a pre-defined set of fields for later import. -- [kubectl-neat 🌟](https://github.com/itaysk/kubectl-neat) Remove clutter from Kubernetes manifests to make them more readable. -- [medium: 4 Simple Kubernetes Terminal Customizations to Boost Your Productivity](https://medium.com/better-programming/4-simple-kubernetes-terminal-customizations-to-boost-your-productivity-deda60a19924) -- [kubeswitch: Kubernetes Version Switcher](https://github.com/steamhaus/kubeswitch) Easily switch kubectl binary versions. -- [Move2Kube 🌟](https://github.com/konveyor/move2kube) Move2Kube is a command-line tool that accelerates the process of re-platforming to Kubernetes/Openshift. It does so by analysing the environment and source artifacts, and asking guidance from the user when required. This tool that can help users migrate from Cloud Foundry and Docker Swarm to Kubernetes. -- [skopeo 🌟](https://github.com/containers/skopeo) Use skopeo to copy images between registries -- [junit5-kubernetes](https://github.com/JeanBaptisteWATENBERG/junit5-kubernetes) aims at using a kubernetes pod directly form your junit5 test classes. -- [mbuffett.com: Replacing ngrok with ktunnel](https://mbuffett.com/posts/ktunnel-ngrok-replace/) -- [seaworthy: A CLI to verify #Kubernetes resource health !! 🌟](https://github.com/cakehappens/seaworthy) Post-apply check to verify your K8s resources are Seaworthy -- [kVDI](https://github.com/tinyzimmer/kvdi) A Kubernetes-native Virtual Desktop Infrastructure. -- [kcg 🌟](https://github.com/bit-cloner/kcg) is a command line tool that lets you create kubeconfig files. The user can interactively choose a namespace and service account and generate a config file with token authentication that has same RBAC permissions assigned to chosen service account. -- [Compass 🌟](https://github.com/winfordlin/Compass) Quickly Pinpoint Errors in your Kubernetes Deployment. -- [kubernetes-dashboard-iam-proxy](https://github.com/Nitro/kubernetes-dashboard-iam-proxy) An in-browser version of aws eks get-token to enable cluster authentication using IAM for the Kubernetes dashboard. -- [kube-vip](https://github.com/plunder-app/kube-vip) is a Load-Balancer for both inside and outside a Kubernetes cluster. -- [Gitkube 🌟](https://github.com/hasura/gitkube) is a tool for building and deploying Docker images on Kubernetes using git push. After a simple initial setup, users can simply keep git push-ing their repos to build and deploy to Kubernetes automatically. -- [vesion-checker](https://github.com/jetstack/version-checker) is a Kubernetes utility for observing the current versions of images running in the cluster, as well as the latest available upstream. These checks get exposed as Prometheus metrics to be viewed on a dashboard, or soft alert cluster operators. -- [Descheduler for Kubernetes 🌟](https://github.com/kubernetes-sigs/descheduler) -> [wecloudpro.com: Balance your Kubernetes cluster](https://www.wecloudpro.com/2020/11/01/Balance-your-kubernetes-cluster.html) -- [kubediff 🌟](https://github.com/weaveworks/kubediff) is a tool for Kubernetes to show you the differences between your running configuration and your version controlled configuration. -- [awslabs/karpenter](https://github.com/awslabs/karpenter) Karpenter is a metrics-driven autoscaler built for Kubernetes and can run in any Kubernetes cluster anywhere. It's performant, extensible, and can autoscale anything that implements the Kubernetes scale subresource. -- [ekglue - Envoy/Kubernetes glue](https://github.com/jrockway/ekglue) ekglue is a projects that facilitates connecting Kubernetes and Envoy, allowing Envoy to read Kubernetes services and endpoints as clusters (via CDS) and endpoints (via EDS). -- [salesforce/Craft](https://github.com/salesforce/craft) CRAFT helps you to create Kubernetes Operators in a robust and generic way for any resource, letting developers focus on CRUD operations of resource management in a Dockerfile. -- [hyscale 🌟](https://github.com/hyscale/hyscale) HyScale takes a declarative definition of your service config and it generates Dockerfile, Container Image, Kubernetes Manifests (YAMLs) and deploys to any Kubernetes Cluster. -- [kubectl-reap is a kubectl plugin that deletes unused Kubernetes resources 🌟](https://github.com/micnncim/kubectl-reap) -- [KubeLinter 🌟](https://github.com/stackrox/kube-linter) is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices. -- [KRD: Kubernetes Reference Deployment](https://github.com/electrocucaracha/krd) krd offers a reference for deploying a Kubernetes cluster. Its ansible playbooks allow to provision a deployment on Bare-metal or Virtual Machines -- [kubeshell](https://github.com/roubles/kubeshell) is a command line tool to interactively shell in to (and out of) kubernetes pods. -- [k8s-harness 🌟](https://github.com/carlosonunez/k8s-harness) lets you create a disposable Kubernetes cluster with **vagrant and Ansible to test your app in a prod-like environment**. -- [Secret backup operator](https://github.com/geritol/secret-backup-operator) is an operator designed to backup secrets on a Kubernetes cluster. Backup happens when secrets are modified. -- [Devtron 🌟](https://github.com/devtron-labs/devtron) is an open source software delivery workflow for kubernetes written in go. -- [DevNation: 10 awesome kubernetes tools every user should know](https://bit.ly/kube-tools-1) - - [developers.redhat.com: 10 awesome Kubernetes tools every user should know | DevNation Tech Talk (video)](https://developers.redhat.com/devnation/tech-talks/10-kubernetes-tools) -- [HyScale 🌟](https://github.com/hyscale/hyscale) takes a declarative definition of your service config and it generates Dockerfile, Container Image, Kubernetes Manifests (YAMLs) and deploys to any Kubernetes Cluster -- [kube-fledged](https://github.com/senthilrch/kube-fledged) is a kubernetes add-on for creating and managing a cache of container images directly on the worker nodes of a kubernetes cluster. It allows a user to define a list of images and onto which worker nodes those images should be cached (i.e. pre-pulled). As a result, application pods start almost instantly, since the images need not be pulled from the registry. -- [Tagger](https://github.com/ricardomaraschini/tagger) keeps references to externally hosted Docker images internally in a Kubernetes cluster by mapping their tags (such as latest) into their references by hash -- [helm-ecr 🌟](https://github.com/vetyy/helm-ecr) is a Helm plugin that supports installing Charts from AWS ECR. -- [PipeCD](https://github.com/pipe-cd/pipe) is a continuous delivery system for declarative Kubernetes, Serverless, and Infrastructure applications. -- [kubecolor 🌟](https://github.com/dty1er/kubecolor) colorises your kubectl output -- [kubectl-sudo](https://github.com/postfinance/kubectl-sudo) This plugin allows users to run kubernetes commands with the security privileges of another user. -- [kfilt](https://github.com/ryane/kfilt) is a tool that lets you filter specific resources from a stream of Kubernetes YAML manifests. It can read manifests from a file, URL, or from stdin. -- [k8s-mirror: Creates a local mirror of a kubernetes cluster in a docker container to support offline reviewing 🌟](https://github.com/darkbitio/k8s-mirror) -- [kube-secret-syncer 🌟](https://github.com/contentful-labs/kube-secret-syncer) is a Kubernetes operator developed using the Kubebuilder framework that keeps the values of Kubernetes Secrets synchronised to secrets in AWS Secrets Manager. - - [contentful.com: Open-sourcing kube-secret-syncer: A Kubernetes operator to sync secrets from AWS Secrets Manager](https://www.contentful.com/blog/2020/10/20/open-source-kube-secret-syncer/) Kube-secret-syncer is a Kubernetes operator developed using the Kubebuilder framework that keeps the values of Kubernetes Secrets synchronised to secrets in AWS Secrets Manager. -- [kapp 🌟](https://carvel.dev/kapp) is a CLI that calculates changes between your configuration and live cluster state and applies changes you approve. -- [garden.io](https://garden.io/) Break down the barriers between development, testing, and CI. Use the same workflows and production-like Kubernetes environments at every step of the process - - [thenewstack.io: Garden: The Configure-Once Kubernetes Platform for Seamless Dev/Prod Integration](https://thenewstack.io/garden-the-configure-once-kubernetes-platform-for-seamless-dev-prod-integration/) -- [pvc-autoresizer](https://github.com/topolvm/pvc-autoresizer) resizes PersistentVolumeClaims (PVCs) when the free amount of storage is below the threshold. It queries the volume usage metrics from Prometheus that collects metrics from kubelet. -- [sKan](https://github.com/alcideio/skan) is a tailor made Kubernetes configuration files and resources scanner that enables developers and devops team members to check whether their work is compliant with security & ops best practices -- [Kubernetes Node Auto Labeller](https://github.com/adaptant-labs/k8s-auto-labeller) -- [PowerfulSeal](https://github.com/powerfulseal/powerfulseal) injects failure into your Kubernetes clusters, so that you can detect problems as early as possible. It allows for writing scenarios describing complete chaos experiments. -- [Kube_query](https://github.com/Isan-Rivkin/kube_query) Use kubectl but on all of the available k8s clusters available in the kubeconfig file. Currently will query only AWS EKS clusters. -- [kubernetes-event-exporter 🌟](https://github.com/opsgenie/kubernetes-event-exporter) This tool allows exporting the often missed Kubernetes events to various outputs so that they can be used for observability or alerting purposes. You won't believe what you are missing. -- [Kubeconform 🌟](https://github.com/yannh/kubeconform) is a Kubernetes manifests validation tool. Build it into your CI to validate your Kubernetes configuration using the schemas from kubernetes-json-schema -- [Kubernetes Janitor](https://codeberg.org/hjacobs/kube-janitor) cleans up (deletes) Kubernetes resources on a configured TTL (time to live) or a configured expiry date (absolute timestamp). -- [arminc/k8s-platform-lcm: Kubernetes platform lifecycle management](https://github.com/arminc/k8s-platform-lcm) Kubernetes platform lifecycle management helps you keep track of all your software and tools that are used or running in and around your Kubernetes platform. +* [kubeonoff](https://github.com/GambitResearch/kubeonoff) is a simple web UI for managing Kubernetes deployments. +* [ipvs-node-controller](https://github.com/kakao/ipvs-node-controller) is the kubernetes controller that solves External-IP (Load Balancer IP) issue with IPVS proxy mode. +* [kubeonoff](https://github.com/GambitResearch/kubeonoff) A simple web UI for managing Kubernetes deployments. Kubeonoff is a small web UI that allows to quickly stop/start/restart pods. Basically it's for non-developers to manage k8s objects per namespace. +* [Maistra 🌟](https://maistra.io/) is an opinionated distribution of Istio designed to work with Openshift. It combines Kiali, Jaeger, and Prometheus into a platform managed according to the OperatorHub lifecycle. +* [custom-pod-autoscaler](https://github.com/jthomperoo/custom-pod-autoscaler) A Custom Pod Autoscaler is a Kubernetes autoscaler that is customised and user created. The Custom Pod Autoscaler framework allows easier and faster development of Kubernetes autoscalers. +* [Kubevol 🌟](https://github.com/bmaynard/kubevol) allows you to audit all your Kubernetes pods for an attached volume or see all the volumes attached to each pod by a specific type (eg: ConfigMap, Secret). +* [kubectl-fuzzy 🌟](https://github.com/d-kuro/kubectl-fuzzy) uses fzf(1)-like fuzzy-finder to do partial or fuzzy search of Kubernetes resources. Instead of specifying full resource names to kubectl commands, you can choose them from an interactive list that you can filter by typing a few characters. +* [Setec 🌟](https://github.com/anthonysterling/setec) Setec (pronounced see-tek) is a utility tool that encrypts and decrypts secrets that are managed by Bitnami's Sealed Secrets. +* [Kompose (Kubernetes + Compose) 🌟](https://github.com/kubernetes/kompose) kompose is a tool to help users who are familiar with docker-compose move to Kubernetes. kompose takes a Docker Compose file and translates it into Kubernetes resources. kompose is a convenience tool to go from local Docker development to managing your application with Kubernetes. Transformation of the Docker Compose format to Kubernetes resources manifest may not be exact, but it helps tremendously when first deploying an application on Kubernetes. +* [kalm.dev 🌟](https://kalm.dev/) Easily deploy and manage applications on Kubernetes. Get what you want out of Kubernetes without having to write and maintain a ton of custom tooling. Deploy apps, handle requests, and hook up CI/CD, all through an intuitive web interface. +* [Kev](https://github.com/appvia/kev) Develop Kubernetes apps iteratively with Docker-Compose. Kev helps developers port and iterate Docker Compose apps onto Kubernetes. It understands the Docker Compose application topology and prepares it for deployment in (multiple) target environments, with minimal user input. We leverage the Docker Compose specification and allow for target-specific configurations to be applied to each component of the application stack, simply. +* [Synator Kubernetes Secret and ConfigMap synchronizer 🌟](https://github.com/TheYkk/synator) Synator synchronize your Secrets and ConfigMaps with your desired namespaces +* [kubes 🌟](https://github.com/boltops-tools/kubes) is a Kubernetes Deployment Tool. It builds the docker image, creates the Kubernetes YAML, and runs kubectl apply. +* [Kubernetes DaemonSet that enables a direct shell on each Node using SSH to localhost](https://gist.github.com/xandout/8d24558c75c53f3cb8bf0a97ec25fcfc) Learn how you can use a DaemonSet to expose an SSH shell on each node of your cluster (even if you don't have SSH installed). I run several K8S cluster on EKS and by default do not setup inbound SSH to the nodes. Sometimes I need to get into each node to check things or run a one-off tool. Rather than update my terraform, rebuild the launch templates and redeploy brand new nodes, I decided to use kubernetes to access each node directly. +* [NS Killer](https://github.com/germainlefebvre4/ns-killer) A Kubernetes project to kill all namespace living over X times. Quite useful when auto-generated development environments on the fly and give them a lifecycle out-of-the-box from Kubernetes or even Helm. You might find it useful if auto-generate development environments on the fly and want to remove old ones on a schedule. +* [kubeswitch: Kubernetes Version Switcher 🌟](https://github.com/steamhaus/kubeswitch) Easily switch kubectl binary versions. +* [Move2Kube 🌟](https://github.com/konveyor/move2kube) a tool that can help users migrate from Cloud Foundry and Docker Swarm to Kubernetes. Move2Kube is a command-line tool that accelerates the process of re-platforming to Kubernetes/Openshift. It does so by analysing the environment and source artifacts, and asking guidance from the user when required. +* [kubectl build (formerly known as kubectl-kaniko)](https://github.com/kvaps/kubectl-build) Kubectl build mimics the kaniko executor, but performs building on your Kubernetes cluster side. This allows you to simply build your local dockerfiles remotely without leaving your cozy environment. +* [Kubei 🌟](https://github.com/Portshift/Kubei) is a vulnerabilities scanning tool that allows users to get an accurate and immediate risk assessment of their kubernetes clusters. Kubei scans all images used in a Kubernetes cluster including images of application pods and system pods +* [Shell-operator](https://github.com/flant/shell-operator) is a tool for running event-driven scripts in a Kubernetes cluster. Shell-operator provides an integration layer between Kubernetes cluster events and shell scripts. +* [sinker is a tool to sync images from one container registry to another](https://github.com/plexsystems/sinker) This is useful in cases when you rely on images that exist in a public container registry, but need to pull from a private registry. +* [ecrcp](https://github.com/bit-cloner/ecrcp) aims to mimic cp command in Linux systems as closely as possible in its implementation. Consider ecrcp to be the cp equivalent to copy container images from docker hub to ECR. +* [Checkov 🌟](https://github.com/bridgecrewio/checkov/) is a static code analysis tool for infrastructure-as-code. It scans cloud infrastructure provisioned using Terraform, Cloudformation, Kubernetes, Serverless or ARM Templates and detects security and compliance misconfigurations. +* [Cluster Cloner 🌟](https://github.com/doitintl/clustercloner/) Reads the Kubernetes clusters in one location (optionally filtering by labels) and clones them into another (or just outputs JSON as a dry run), to/from AWS, GCP, and Azure. +* [kubectl-eksporter 🌟](https://github.com/Kyrremann/kubectl-eksporter) A simple Ruby-script to export k8s resources, and removes a pre-defined set of fields for later import. +* [kubectl-neat 🌟](https://github.com/itaysk/kubectl-neat) Remove clutter from Kubernetes manifests to make them more readable. +* [medium: 4 Simple Kubernetes Terminal Customizations to Boost Your Productivity](https://medium.com/better-programming/4-simple-kubernetes-terminal-customizations-to-boost-your-productivity-deda60a19924) +* [kubeswitch: Kubernetes Version Switcher](https://github.com/steamhaus/kubeswitch) Easily switch kubectl binary versions. +* [Move2Kube 🌟](https://github.com/konveyor/move2kube) Move2Kube is a command-line tool that accelerates the process of re-platforming to Kubernetes/Openshift. It does so by analysing the environment and source artifacts, and asking guidance from the user when required. This tool that can help users migrate from Cloud Foundry and Docker Swarm to Kubernetes. +* [skopeo 🌟](https://github.com/containers/skopeo) Use skopeo to copy images between registries +* [junit5-kubernetes](https://github.com/JeanBaptisteWATENBERG/junit5-kubernetes) aims at using a kubernetes pod directly form your junit5 test classes. +* [mbuffett.com: Replacing ngrok with ktunnel](https://mbuffett.com/posts/ktunnel-ngrok-replace/) +* [seaworthy: A CLI to verify #Kubernetes resource health !! 🌟](https://github.com/cakehappens/seaworthy) Post-apply check to verify your K8s resources are Seaworthy +* [kVDI](https://github.com/tinyzimmer/kvdi) A Kubernetes-native Virtual Desktop Infrastructure. +* [kcg 🌟](https://github.com/bit-cloner/kcg) is a command line tool that lets you create kubeconfig files. The user can interactively choose a namespace and service account and generate a config file with token authentication that has same RBAC permissions assigned to chosen service account. +* [Compass 🌟](https://github.com/winfordlin/Compass) Quickly Pinpoint Errors in your Kubernetes Deployment. +* [kubernetes-dashboard-iam-proxy](https://github.com/Nitro/kubernetes-dashboard-iam-proxy) An in-browser version of aws eks get-token to enable cluster authentication using IAM for the Kubernetes dashboard. +* [kube-vip](https://github.com/plunder-app/kube-vip) is a Load-Balancer for both inside and outside a Kubernetes cluster. +* [Gitkube 🌟](https://github.com/hasura/gitkube) is a tool for building and deploying Docker images on Kubernetes using git push. After a simple initial setup, users can simply keep git push-ing their repos to build and deploy to Kubernetes automatically. +* [vesion-checker](https://github.com/jetstack/version-checker) is a Kubernetes utility for observing the current versions of images running in the cluster, as well as the latest available upstream. These checks get exposed as Prometheus metrics to be viewed on a dashboard, or soft alert cluster operators. +* [Descheduler for Kubernetes 🌟](https://github.com/kubernetes-sigs/descheduler) -> [wecloudpro.com: Balance your Kubernetes cluster](https://www.wecloudpro.com/2020/11/01/Balance-your-kubernetes-cluster.html) +* [kubediff 🌟](https://github.com/weaveworks/kubediff) is a tool for Kubernetes to show you the differences between your running configuration and your version controlled configuration. +* [awslabs/karpenter](https://github.com/awslabs/karpenter) Karpenter is a metrics-driven autoscaler built for Kubernetes and can run in any Kubernetes cluster anywhere. It's performant, extensible, and can autoscale anything that implements the Kubernetes scale subresource. +* [ekglue - Envoy/Kubernetes glue](https://github.com/jrockway/ekglue) ekglue is a projects that facilitates connecting Kubernetes and Envoy, allowing Envoy to read Kubernetes services and endpoints as clusters (via CDS) and endpoints (via EDS). +* [salesforce/Craft](https://github.com/salesforce/craft) CRAFT helps you to create Kubernetes Operators in a robust and generic way for any resource, letting developers focus on CRUD operations of resource management in a Dockerfile. +* [hyscale 🌟](https://github.com/hyscale/hyscale) HyScale takes a declarative definition of your service config and it generates Dockerfile, Container Image, Kubernetes Manifests (YAMLs) and deploys to any Kubernetes Cluster. +* [kubectl-reap is a kubectl plugin that deletes unused Kubernetes resources 🌟](https://github.com/micnncim/kubectl-reap) +* [KubeLinter 🌟](https://github.com/stackrox/kube-linter) is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices. +* [KRD: Kubernetes Reference Deployment](https://github.com/electrocucaracha/krd) krd offers a reference for deploying a Kubernetes cluster. Its ansible playbooks allow to provision a deployment on Bare-metal or Virtual Machines +* [kubeshell](https://github.com/roubles/kubeshell) is a command line tool to interactively shell in to (and out of) kubernetes pods. +* [k8s-harness 🌟](https://github.com/carlosonunez/k8s-harness) lets you create a disposable Kubernetes cluster with **vagrant and Ansible to test your app in a prod-like environment**. +* [Secret backup operator](https://github.com/geritol/secret-backup-operator) is an operator designed to backup secrets on a Kubernetes cluster. Backup happens when secrets are modified. +* [Devtron 🌟](https://github.com/devtron-labs/devtron) is an open source software delivery workflow for kubernetes written in go. +* [DevNation: 10 awesome kubernetes tools every user should know](https://bit.ly/kube-tools-1) + * [developers.redhat.com: 10 awesome Kubernetes tools every user should know | DevNation Tech Talk (video)](https://developers.redhat.com/devnation/tech-talks/10-kubernetes-tools) +* [HyScale 🌟](https://github.com/hyscale/hyscale) takes a declarative definition of your service config and it generates Dockerfile, Container Image, Kubernetes Manifests (YAMLs) and deploys to any Kubernetes Cluster +* [kube-fledged](https://github.com/senthilrch/kube-fledged) is a kubernetes add-on for creating and managing a cache of container images directly on the worker nodes of a kubernetes cluster. It allows a user to define a list of images and onto which worker nodes those images should be cached (i.e. pre-pulled). As a result, application pods start almost instantly, since the images need not be pulled from the registry. +* [Tagger](https://github.com/ricardomaraschini/tagger) keeps references to externally hosted Docker images internally in a Kubernetes cluster by mapping their tags (such as latest) into their references by hash +* [helm-ecr 🌟](https://github.com/vetyy/helm-ecr) is a Helm plugin that supports installing Charts from AWS ECR. +* [PipeCD](https://github.com/pipe-cd/pipe) is a continuous delivery system for declarative Kubernetes, Serverless, and Infrastructure applications. +* [kubecolor 🌟](https://github.com/dty1er/kubecolor) colorises your kubectl output +* [kubectl-sudo](https://github.com/postfinance/kubectl-sudo) This plugin allows users to run kubernetes commands with the security privileges of another user. +* [kfilt](https://github.com/ryane/kfilt) is a tool that lets you filter specific resources from a stream of Kubernetes YAML manifests. It can read manifests from a file, URL, or from stdin. +* [k8s-mirror: Creates a local mirror of a kubernetes cluster in a docker container to support offline reviewing 🌟](https://github.com/darkbitio/k8s-mirror) +* [kube-secret-syncer 🌟](https://github.com/contentful-labs/kube-secret-syncer) is a Kubernetes operator developed using the Kubebuilder framework that keeps the values of Kubernetes Secrets synchronised to secrets in AWS Secrets Manager. + * [contentful.com: Open-sourcing kube-secret-syncer: A Kubernetes operator to sync secrets from AWS Secrets Manager](https://www.contentful.com/blog/2020/10/20/open-source-kube-secret-syncer/) Kube-secret-syncer is a Kubernetes operator developed using the Kubebuilder framework that keeps the values of Kubernetes Secrets synchronised to secrets in AWS Secrets Manager. +* [kapp 🌟](https://carvel.dev/kapp) is a CLI that calculates changes between your configuration and live cluster state and applies changes you approve. +* [garden.io](https://garden.io/) Break down the barriers between development, testing, and CI. Use the same workflows and production-like Kubernetes environments at every step of the process + * [thenewstack.io: Garden: The Configure-Once Kubernetes Platform for Seamless Dev/Prod Integration](https://thenewstack.io/garden-the-configure-once-kubernetes-platform-for-seamless-dev-prod-integration/) +* [pvc-autoresizer](https://github.com/topolvm/pvc-autoresizer) resizes PersistentVolumeClaims (PVCs) when the free amount of storage is below the threshold. It queries the volume usage metrics from Prometheus that collects metrics from kubelet. + * [blog.kintone.io: Introducing pvc-autoresizer](https://blog.kintone.io/entry/pvc-autoresizer) +* [sKan](https://github.com/alcideio/skan) is a tailor made Kubernetes configuration files and resources scanner that enables developers and devops team members to check whether their work is compliant with security & ops best practices +* [Kubernetes Node Auto Labeller](https://github.com/adaptant-labs/k8s-auto-labeller) +* [Kube_query](https://github.com/Isan-Rivkin/kube_query) Use kubectl but on all of the available k8s clusters available in the kubeconfig file. Currently will query only AWS EKS clusters. +* [kubernetes-event-exporter 🌟](https://github.com/opsgenie/kubernetes-event-exporter) This tool allows exporting the often missed Kubernetes events to various outputs so that they can be used for observability or alerting purposes. You won't believe what you are missing. +* [Kubeconform 🌟](https://github.com/yannh/kubeconform) is a Kubernetes manifests validation tool. Build it into your CI to validate your Kubernetes configuration using the schemas from kubernetes-json-schema +* [Kubernetes Janitor](https://codeberg.org/hjacobs/kube-janitor) cleans up (deletes) Kubernetes resources on a configured TTL (time to live) or a configured expiry date (absolute timestamp). +* [arminc/k8s-platform-lcm: Kubernetes platform lifecycle management](https://github.com/arminc/k8s-platform-lcm) Kubernetes platform lifecycle management helps you keep track of all your software and tools that are used or running in and around your Kubernetes platform. +* [kube-batch](https://github.com/kubernetes-sigs/kube-batch) is a batch scheduler for Kubernetes, providing mechanisms for applications which would like to run batch jobs leveraging Kubernetes. A batch scheduler of kubernetes for high performance workload, e.g. AI/ML, BigData, HPC +* [slipway: A Kubernetes controller to automate gitops provisioning](https://github.com/slipway-gitops/slipway) +* [github.com: dnsconfig-injector - Mutating Admission Webhook for dnsconfig pod injection](https://github.com/karampok/dnsconfig-injector) +* [kubectl-view-webhook 🌟](https://github.com/Trendyol/kubectl-view-webhook) Visualize your webhook configurations in Kubernetes. +* [ContainerSSH: Launch containers on demand 🌟🌟](https://containerssh.io) ContainerSSH launches a new container for each SSH connection in Kubernetes, Podman or Docker. The user is transparently dropped in the container and the container is removed when the user disconnects. Authentication and container configuration are dynamic using webhooks, no system users required. +* [reconshell.com: Kubei – Kubernetes Runtime Vulnerabilities Scanner 🌟](https://reconshell.com/kubei-kubernetes-runtime-vulnerabilities-scanner/) +* [Alcide Advisor: an agentless service for Kubernetes audit and compliance that's built to ensure a frictionless and secured DevSecOps workflow](https://github.com/alcideio/advisor) +* [Lockbox: Offline encryption of Kubernetes Secrets](https://github.com/cloudflare/lockbox) Lockbox is a secure way to store Kubernetes Secrets offline. Secrets are asymmetrically encrypted, and can only be decrypted by the Lockbox Kubernetes controller. A companion CLI tool, locket, makes encrypting secrets a one-step process. +* [openshift: Introducing kube-burner, A tool to Burn Down Kubernetes and OpenShift 🌟](https://www.openshift.com/blog/introducing-kube-burner-a-tool-to-burn-down-kubernetes-and-openshift) Kube-burner is a tool designed to stress different OpenShift components basically by coordinating the creation and deletion of k8s resources. Along this blog series we’ll talk about how to use it in OpenShift 4. +* [kube-ebpf-exporter 🌟](https://github.com/ahas-sigs/kube-ebpf-exporter) Prometheus exporter for custom eBPF metrics. +* [qontract](https://github.com/app-sre/qontract-server) qontract (Queryable cONTRACT) is a collection of tools used to SREs to expose available managed services to application developer teams. ## Enforcing Policies and governance for kubernetes workloads with Conftest * [Accelerated Feedback Loops when Developing for Kubernetes with Conftest](https://engineering.plex.com/posts/kubernetes-policy-conftest) Learn how to validate Kubernetes resources with Conftest for faster feedback loops @@ -950,6 +1065,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [thenewstack.io: Red Hat Brings Backup, Snapshots to OpenShift Container Storage](https://thenewstack.io/red-hat-brings-backup-snapshots-to-openshift-container-storage/) * [thenewstack.io: 5 Best Practices to Back up Kubernetes](https://thenewstack.io/5-best-practices-to-back-up-kubernetes) * [Bacula Enterprise for OpenShift and Kubernetes 🌟](https://www.baculasystems.com/) +* [dani-izquierdo95.medium.com: Batch processing using Cron Jobs. MySQL automated backup on Openshift/K8s](https://dani-izquierdo95.medium.com/mysql-automated-backup-on-openshift-k8s-3690280d304f) ### Kubernetes Volume Snapshot * [kubernetes.io: Kubernetes 1.20: Kubernetes Volume Snapshot Moves to GA](https://kubernetes.io/blog/2020/12/10/kubernetes-1.20-volume-snapshot-moves-to-ga/) @@ -980,6 +1096,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [medium.com: Kubernetes Tip: How To Disambiguate A Pod Crash To Application Or To Kubernetes Platform? (CrashLoopBackOff)](https://medium.com/tailwinds-navigator/kubernetes-tip-how-to-disambiguate-a-pod-crash-to-application-or-to-kubernetes-platform-f6c1395a8d09) * [veducate.co.uk: How to fix in Kubernetes – Deleting a PVC stuck in status “Terminating”](https://veducate.co.uk/kubernetes-pvc-terminating/) * [thenewstack.io: 5 Best Practices to Back up Kubernetes](https://thenewstack.io/5-best-practices-to-back-up-kubernetes/) +* [tennexas.com: Kubernetes Troubleshooting Examples](https://tennexas.com/kubernetes-troubleshooting-examples/) ### Debugging Techniques and Strategies. Debugging with ephemeral containers - [kubectl-debug](https://github.com/aylei/kubectl-debug) @@ -1025,6 +1142,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [geekflare.com: 14 Kubernetes Tutorials for Beginner to Master](https://geekflare.com/learn-kubernetes/) * [freecodecamp.org: The Kubernetes Handbook 🌟](https://www.freecodecamp.org/news/the-kubernetes-handbook/) * [youtube: Kubernetes Pods and ReplicaSets explained 🌟](https://www.youtube.com/playlist?list=PLy0Gle4XyvbGhGpX0CXAuiEsfL-MD-rND) +* [medium: DraftKings Kubernetes Workshop: Hands-on Learning in K8s (with Video Walkthrough)](https://medium.com/draftkings-engineering/draftkings-workshop-demystifying-kubernetes-4ce86c187408)
@@ -1059,19 +1177,20 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t - [k8s-diagrams 🌟](https://github.com/cloudogu/k8s-diagrams) A collection of diagrams explaining kubernetes by cloudogu, written in [PlantUML](https://twitter.com/PlantUML). ## Kubernetes Patterns and Antipatterns. Service Discovery -* [github.com/k8spatterns/examples 🌟](https://github.com/k8spatterns/examples) Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud-Native Applications" -* [kubernetes.io: container design patterns](https://kubernetes.io/blog/2016/06/container-design-patterns/) -* [magalix.com: Kubernetes Patterns - The Service Discovery Pattern 🌟](https://www.magalix.com/blog/kubernetes-patterns-the-service-discovery-pattern) -* [gardener.cloud: Kubernetes Antipatterns](https://gardener.cloud/050-tutorials/content/howto/antipattern/) -* [dzone.com: Performance Patterns in Microservices-Based Integrations 🌟](https://dzone.com/articles/performance-patterns-in-microservices-based-integr-1) -* [developers.redhat.com: Top 10 must-know Kubernetes design patterns](https://developers.redhat.com/blog/2020/05/11/top-10-must-know-kubernetes-design-patterns/) -* [medium: 10 Anti-Patterns for Kubernetes Deployments 🌟](https://medium.com/better-programming/10-antipatterns-for-kubernetes-deployments-e97ce1199f2d) Common practices in Kubernetes deployments that have better solutions -* [learnsteps.com: How Kubernetes works on reconciler pattern](https://www.learnsteps.com/how-kubernetes-works-on-a-reconciler-pattern/) -* [learncloudnative.com: Sidecar Container Pattern](https://www.learncloudnative.com/blog/2020-09-30-sidecar-container/) +- [github.com/k8spatterns/examples 🌟](https://github.com/k8spatterns/examples) Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud-Native Applications" +- [kubernetes.io: container design patterns](https://kubernetes.io/blog/2016/06/container-design-patterns/) +- [magalix.com: Kubernetes Patterns - The Service Discovery Pattern 🌟](https://www.magalix.com/blog/kubernetes-patterns-the-service-discovery-pattern) +- [gardener.cloud: Kubernetes Antipatterns](https://gardener.cloud/050-tutorials/content/howto/antipattern/) +- [dzone.com: Performance Patterns in Microservices-Based Integrations 🌟](https://dzone.com/articles/performance-patterns-in-microservices-based-integr-1) +- [developers.redhat.com: Top 10 must-know Kubernetes design patterns](https://developers.redhat.com/blog/2020/05/11/top-10-must-know-kubernetes-design-patterns/) +- [medium: 10 Anti-Patterns for Kubernetes Deployments 🌟](https://medium.com/better-programming/10-antipatterns-for-kubernetes-deployments-e97ce1199f2d) Common practices in Kubernetes deployments that have better solutions +- [learnsteps.com: How Kubernetes works on reconciler pattern](https://www.learnsteps.com/how-kubernetes-works-on-a-reconciler-pattern/) +- [learncloudnative.com: Sidecar Container Pattern](https://www.learncloudnative.com/blog/2020-09-30-sidecar-container/) - [towardsdatascience.com: Kubernetes pattern for applications with external environment configuration 🌟](https://towardsdatascience.com/kubernetes-pattern-for-applications-with-external-environment-configuration-a42d7bdd7e97) Learn how to decouple configuration from the application using git-sync, Kubernetes init-containers, ConfigMaps and volumes. - [codefresh.io: Kubernetes Deployment Antipatterns – part 1 🌟](https://codefresh.io/kubernetes-tutorial/kubernetes-antipatterns-1/) - [codefresh.io: Kubernetes Deployment Antipatterns – part 2 🌟](https://codefresh.io/kubernetes-tutorial/kubernetes-antipatterns-2/) - [iximiuz.com: Service discovery in Kubernetes - combining the best of two worlds 🌟](https://iximiuz.com/en/posts/service-discovery-in-kubernetes/) +- [github.com/sharadbhat/KubernetesPatterns: YAML and Golang implementations of common Kubernetes patterns](https://github.com/sharadbhat/KubernetesPatterns) [![Top 10 Kubernetes patterns](images/top_10_kubernetes_patterns.png)](https://developers.redhat.com/blog/2020/05/11/top-10-must-know-kubernetes-design-patterns/) @@ -1085,6 +1204,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [Kubernetes: Up and Running, 2nd Edition🌟](http://shop.oreilly.com/product/0636920223788.do) Dive into the Future of Infrastructure. By Brendan Burns, Kelsey Hightower, Joe Beda * [Container Security](https://www.amazon.com/gp/product/1492056707) * [Don't make this container security mistake](https://bitfieldconsulting.com/blog/container-security) +* [digitalocean.com: From Containers to Kubernetes with Node.js eBook](https://www.digitalocean.com/community/books/from-containers-to-kubernetes-with-node-js-ebook)
[![Kubernetes: Up and Running](images/kubernetes_up_running_kelsey_hightower.gif)](http://shop.oreilly.com/product/0636920223788.do) @@ -1126,6 +1246,9 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t - [isaaguilar/terraform-operator: Terraform Operator](https://github.com/isaaguilar/terraform-operator) A Kubernetes CRD and Controller to handle Terraform operations by generating k8s jobs catered to perform Terraform workflows - [hashicorp/terraform-k8s: Terraform Cloud Operator for Kubernetes](https://github.com/hashicorp/terraform-k8s) The Terraform Cloud Operator for Kubernetes provides first-class integration between Kubernetes and Terraform Cloud by extending the Kubernetes control plane to enable lifecycle management of cloud and on-prem infrastructure. - [didil/autobucket-operator](https://github.com/didil/autobucket-operator) The autobucket operator is a Kubernetes operator that automatically creates and manages Cloud Buckets (Object Storage) for k8s Deployments. +- [openshift.com: Is your Operator Air-Gap Friendly?](https://www.openshift.com/blog/is-your-operator-air-gap-friendly) +- [kuberhealthy 🌟](https://github.com/Comcast/kuberhealthy) An operator for synthetic monitoring on Kubernetes. Write your own tests in your own container and Kuberhealthy will manage everything else. Automatically creates and sends metrics to Prometheus and InfluxDB. Included simple JSON status page. Supplements other solutions like Prometheus very nicely! +- [Bare Metal Operator](https://github.com/metal3-io/baremetal-operator) The Bare Metal Operator implements a Kubernetes API for managing bare metal hosts. It maintains an inventory of available hosts as Custom Resource Definitions. ### Operator Capability Levels - [Operator Capability Levels](https://operatorframework.io/operator-capabilities/) Operators come in different maturity levels in regards to their lifecycle management capabilities for the application or workload they deliver. The capability models aims to provide guidance in terminology to express what features users can expect from an Operator. @@ -1143,6 +1266,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [docs.fluxcd.io](https://docs.fluxcd.io/) * [github: Flux CD](https://github.com/fluxcd/flux) * [dzone: Developing Applications on Multi-tenant Clusters With Flux and Kustomize](https://dzone.com/articles/developing-applications-on-multitenant-clusters-wi) Take a look at how multiple teams can use the resources of a single cluster to develop an application. +* [alicegg.tech: Managing a Kubernetes cluster with Helm and FluxCD](https://alicegg.tech/2020/11/09/helm.html) ### K8s KPIs with Kuberhealthy Operator - [K8s KPIs with Kuberhealthy 🌟](https://kubernetes.io/blog/2020/05/29/k8s-kpis-with-kuberhealthy/) transforming Kuberhealthy into a Kubernetes operator for synthetic monitoring. This new ability granted developers the means to create their own Kuberhealthy check containers to synthetically monitor their applications and clusters. Additionally, we created a guide on how to easily install and use Kuberhealthy in order to capture some helpful synthetic [KPIs](https://kpi.org/KPI-Basics). @@ -1150,6 +1274,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t ### Writing Kubernetes Operators * [Kubernetes.io: Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) * [opensource.com: Build a Kubernetes Operator in 10 minutes with Operator SDK](https://opensource.com/article/20/3/kubernetes-operator-sdk) +* [itnext.io: Testing the Operator SDK and making a prefetch mechanism for Kubernetes](https://itnext.io/testing-the-operator-sdk-and-making-a-prefetch-mechanism-for-kubernetes-7508577efdd7) * [magalix.com: Creating Custom Kubernetes Operators](https://www.magalix.com/blog/creating-custom-kubernetes-operators) * [medium.com: Writing Your First Kubernetes Operator](https://medium.com/faun/writing-your-first-kubernetes-operator-8f3df4453234) * [bmc.com: What Is a Kubernetes Operator?](https://www.bmc.com/blogs/kubernetes-operator/) @@ -1159,6 +1284,8 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [medium: From Zero to Kubernetes Operator](https://medium.com/@victorpaulo/from-zero-to-kubernetes-operator-dd06436b9d89) In this post you will learn how to build a simple Kubernetes Operator. The article starts with the main concepts and then continues with hands-on labs where you will create a Kubernetes Operator from the ground up. * [openshift.com: Build Your Kubernetes Operator With the Right Tool 🌟](https://www.openshift.com/blog/build-your-kubernetes-operator-with-the-right-tool) **Go-based operators are by far the most popular. That is why Go is probably the first option to consider.** The other good choice is Helm, especially if you already have a Helm chart for your software or you want to build your operator quickly and you don't need any complex [capability levels](https://operatorframework.io/operator-capabilities/). I'd leave Operator Frameworks or Bare Programming Language implementations only for the cases when keeping a single programming language in your organization is a priority. * [codilime.com: How to create a custom resource with Kubernetes Operator](https://codilime.com/how-to-create-a-custom-resource-with-kubernetes-operator/) Implementing DaemonJob from scratch learn how to create a custom resource with the Kubernetes Operator Framework. +* [rookout.com: Lessons Learned When Building A Kubernetes Operator](https://www.rookout.com/blog/lessons-learned-when-building-a-kubernetes-operator) +* [pavel.cool: Oxidizing the Kubernetes operator](https://www.pavel.cool/rust/rust-kubernetes-operators/) ## Kubernetes Networking * [kubernetes.io: The Kubernetes network model. How to implement the Kubernetes networking model](https://kubernetes.io/docs/concepts/cluster-administration/networking/) @@ -1185,12 +1312,19 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [haproxy.com: Announcing HAProxy Kubernetes Ingress Controller 1.5 🌟](https://www.haproxy.com/blog/announcing-haproxy-kubernetes-ingress-controller-1-5/) * [devclass.com: HAProxy Ingress Controller 1.5 introduces mTLS support, gives load balancing experts more power](https://devclass.com/2021/01/26/haproxy-ingress-controller-1_5/) * [thenewstack.io: HAProxy Kubernetes Ingress Controller Moves Outside the Cluster](https://thenewstack.io/haproxy-kubernetes-ingress-controller-moves-outside-the-cluster/) +* [suse.com: NGINX Guest Blog: NGINX Kubernetes Ingress Controller 🌟](https://www.suse.com/c/nginx-guest-blog-kubernetes-ingress-controller) +* [dustinspecker.com: iptables: How Kubernetes Services Direct Traffic to Pods](https://dustinspecker.com/posts/iptables-how-kubernetes-services-direct-traffic-to-pods) In this article you will learn how Kubernetes's kube-proxy uses iptables to direct traffic to pods randomly. You'll focus on the ClusterIP type of Kubernetes services. +* [blog.cloudflare.com: Moving k8s communication to gRPC](https://blog.cloudflare.com/moving-k8s-communication-to-grpc/) +* [tech2fun.net: K8s Nginx Ingress Handling TLS Traffic and Using Pod Readiness Probes](https://tech2fun.net/k8s-nginx-ingress-handling-tls-traffic-and-using-pod-readiness-probes/) +* [K8GB - Kubernetes Global Balancer](https://github.com/AbsaOSS/k8gb) - [openshift.com: K8GB - Kubernetes Global Balancer ](https://www.openshift.com/blog/openshift-commons-briefing-k8gb-kubernetes-global-balancer-with-yuri-tsarev-absa-and-paul-morie-red-hat) +* [altoros.com: Kubernetes Networking: How to Write Your Own CNI Plug-in with Bash](https://www.altoros.com/blog/kubernetes-networking-writing-your-own-simple-cni-plug-in-with-bash/) ### Kubernetes Network Policy * [howtoforge.com: Network Policy in Kubernetes 🌟](https://www.howtoforge.com/kubernetes_network_policy/) By default, pods accept traffic from any source. A network policy helps to specify how a group of pods can communicate with each other and other network endpoints. * [medium: How to Provision Network Policies in Kubernetes | AWS 🌟](https://medium.com/avmconsulting-blog/exploring-network-policies-in-kubernetes-c8a3d8ed00cb) * [learncloudnative.com: Kubernetes Network Policy](https://www.learncloudnative.com/blog/2020-10-07-network-policies) * [bionconsulting.com: Kubernetes Network Policies](https://www.bionconsulting.com/blog/kubernetes-network-policies) + * [bionconsulting.com: Kubernetes Network Policies - Part 2](https://www.bionconsulting.com/blog/kubernetes-network-policies-part-2) * [cilium.io: NetworkPolicy Editor: Create, Visualize, and Share Kubernetes NetworkPolicies 🌟](https://cilium.io/blog/2021/02/10/network-policy-editor)
@@ -1231,6 +1365,7 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t - [kube-router](https://www.kube-router.io/) - [Calico](https://www.projectcalico.org/) - [Canal](https://docs.projectcalico.org/getting-started/kubernetes/flannel/flannel) + - [VMware-tanzu Antrea](https://github.com/vmware-tanzu/antrea) - [IPAM](https://en.wikipedia.org/wiki/IP_address_management) modules: - dhcp - host-local @@ -1248,10 +1383,12 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [Project Calico 🌟](https://www.projectcalico.org/) Secure networking for the cloud native era * [medium: Calico for Kubernetes networking: the basics & examples](https://medium.com/flant-com/calico-for-kubernetes-networking-792b41e19d69) * [thenewstack.io: Tigera's Calico Aims to Ease Connectivity Pain with Kubernetes](https://thenewstack.io/tigera-aims-ease-connectivity-pain-kubernetes/) +* [projectcalico.org: Advertising Kubernetes Service IPs with Calico and BGP](https://www.projectcalico.org/advertising-kubernetes-service-ips-with-calico-and-bgp/) ### DNS Service with CoreDNS - [medium: How to Autoscale the DNS Service in a Kubernetes Cluster](https://medium.com/faun/how-to-autoscale-the-dns-service-in-a-kubernetes-cluster-cbb46ae89678) - [thenewstack.io: Supercharge CoreDNS with Cluster Addons 🌟](https://thenewstack.io/supercharge-coredns-with-cluster-addons/) +- [sysdig.com: How to monitor coreDNS 🌟](https://sysdig.com/blog/how-to-monitor-coredns/) The most common problems and outages in a Kubernetes cluster come from coreDNS, so learning how to monitor coreDNS is crucial. ### Kubernetes Node Local DNS Cache - [NodeLocal DNSCache](https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/20190424-NodeLocalDNS-beta-proposal.md) @@ -1266,10 +1403,9 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [Dzone - devops security at scale](https://dzone.com/articles/devops-security-at-scale) * [Dzone - Kubernetes Policy Management with Kyverno](https://dzone.com/articles/kubernetes-policy-management-with-kyverno) * [github Kyverno - Kubernetes Native Policy Management](https://github.com/nirmata/kyverno/) + * [nirmata.com: Auto-labeling Kubernetes resources with Kyverno](https://nirmata.com/2020/10/30/auto-labeling-kubernetes-resources-with-kyverno) * [Dzone - OAuth 2.0](https://dzone.com/articles/oauth-20-beginners-guide) * [Kubernetes Security Best Practices 🌟](https://github.com/freach/kubernetes-security-best-practice/blob/master/README.md#firewall-ports-fire) -* [Kubernetes Certs](https://github.com/jetstack/cert-manager/) -* [Using SSL certificates from Let’s Encrypt in your Kubernetes Ingress via cert-manager 🌟](https://medium.com/flant-com/cert-manager-lets-encrypt-ssl-certs-for-kubernetes-7642e463bbce) * [jeffgeerling.com: Everyone might be a cluster-admin in your Kubernetes cluster](https://www.jeffgeerling.com/blog/2020/everyone-might-be-cluster-admin-your-kubernetes-cluster) * [Microsoft.com: Attack matrix for Kubernetes 🌟](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) * [codeburst.io: 7 Kubernetes Security Best Practices You Must Follow](https://codeburst.io/7-kubernetes-security-best-practices-you-must-follow-ae32f1ed6444) @@ -1288,6 +1424,22 @@ Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-t * [thenewstack.io: Jetstack Secure Promises to Ease Kubernetes TLS Security](https://thenewstack.io/jetstack-secure-promises-to-ease-kubernetes-tls-security/) * [thenewstack.io: Best Practices for Securely Setting up a Kubernetes Cluster](https://thenewstack.io/best-practices-for-securely-setting-up-a-kubernetes-cluster/) * [stackrox/Kubernetes_Security_Specialist_Study_Guide 🌟](https://github.com/stackrox/Kubernetes_Security_Specialist_Study_Guide) +* [dev.to: Store your Kubernetes Secrets in Git thanks to Kubeseal. Hello SealedSecret! 🌟](https://dev.to/stack-labs/store-your-kubernetes-secrets-in-git-thanks-to-kubeseal-hello-sealedsecret-2i6h) +* [thenewstack.io: A Security Comparison of Docker, CRI-O and Containerd 🌟](https://thenewstack.io/a-security-comparison-of-docker-cri-o-and-containerd/) +* [github.com/stackrox: Certified Kubernetes Security Specialist Study Guide 🌟](https://github.com/stackrox/Kubernetes_Security_Specialist_Study_Guide) +* [youtube: Kubernetes Security: Attacking and Defending K8s Clusters - by Magno Logan](https://www.youtube.com/watch?v=OOHmg1J_8ck&ab_channel=RedTeamVillage) +* [cncf.io: Kubernetes Security 🌟](https://www.cncf.io/blog/2021/03/22/kubernetes-security/) +* [microsoft.com: Secure containerized environments with updated threat matrix for Kubernetes](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/) +* [kyverno.io 🌟](https://kyverno.io/) Kubernetes Native Policy Management. Open Policy Agent? That’s old school. Securely manage workloads on your kubernetesio clusters with this handy new tool, Kyverno.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. [youtube: The Way of the Future | Kubernetes Policy Management with Kyverno](https://www.youtube.com/watch?v=8fgrjBnxqi0&t=270s&ab_channel=AppSecEngineer) +* [cyberark.com: Attacking Kubernetes Clusters Through Your Network Plumbing: Part 1](https://www.cyberark.com/resources/threat-research-blog/attacking-kubernetes-clusters-through-your-network-plumbing-part-1?utm_sq=goa40uvlx1) +* [cyberark.com: Kubesploit: A New Offensive Tool for Testing Containerized Environments 🌟](https://www.cyberark.com/resources/threat-research-blog/kubesploit-a-new-offensive-tool-for-testing-containerized-environments) +* [redkubes.com: 10 Kubernetes Security Risks & Best Practices](https://redkubes.com/10-kubernetes-security-risks-best-practices/) +* [thenewstack.io: Defend the Core: Kubernetes Security at Every Layer](https://thenewstack.io/defend-the-core-kubernetes-security-at-every-layer/) + +### Encrypting the certificate for Kubernetes +* [Kubernetes Certs](https://github.com/jetstack/cert-manager/) +* [Using SSL certificates from Let’s Encrypt in your Kubernetes Ingress via cert-manager 🌟](https://medium.com/flant-com/cert-manager-lets-encrypt-ssl-certs-for-kubernetes-7642e463bbce) +* [medium: Encrypting the certificate for Kubernetes (Let’s Encrypt) 🌟](https://medium.com/avmconsulting-blog/encrypting-the-certificate-for-kubernetes-lets-encrypt-805d2bf88b2a)
@@ -1419,6 +1571,8 @@ Kubernetes supports several authentication methods out-of-the-box, such as X.509 * [loft.sh: Kubernetes Development Environments – A Comparison](https://loft.sh/blog/kubernetes-development-environments-comparison/) * [opensource.com: 4 ways to run Kubernetes locally](https://opensource.com/article/20/11/run-kubernetes-locally) Set up a local development environment or just try out the container orchestration platform with these tools. * [dex.dev: Local Development Clusters](https://www.dex.dev/dex-videos/development-clusters) +* [itnext.io: Kubernetes local playground alternatives](https://itnext.io/kubernetes-local-playground-alternatives-e1a590632b9f) +* [dex.dev: Local Development Clusters](https://www.dex.dev/dex-videos/development-clusters) ### Telepresence local development for k8s and openshift microservices * [telepresence.io 🌟](https://www.telepresence.io) Fast, local development for kubernetes and openshift microservices. @@ -1464,16 +1618,8 @@ Kubernetes supports several authentication methods out-of-the-box, such as X.509 * [en.sokube.ch: AWS + Kubernetes = AWS Elastic Kubernetes Service (EKS) 🌟](https://en.sokube.ch/post/aws-kubernetes-aws-elastic-kubernetes-service-eks) * [aws.amazon.com: Operating a multi-regional stateless application using Amazon EKS](https://aws.amazon.com/blogs/containers/operating-a-multi-regional-stateless-application-using-amazon-eks/) * [clickittech.com: Amazon ECS vs EKS : The Best Container Orchestration Platform 🌟](https://www.clickittech.com/aws/amazon-ecs-vs-eks/) - -### GCP and GKE -- [Fetches all Primitive and Predefined GCP IAM Roles](https://github.com/darkbitio/gcp-iam-role-permissions) -- [Using new traffic control features in External HTTP(S) load balancer](https://cloudblog.withgoogle.com/products/networking/how-to-use-new-traffic-control-features-in-cloud-load-balancing/amp/) -- [Setting up NodeLocal DNSCache](https://cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache) -- [Looking ahead as GKE, the original managed Kubernetes, turns 5](https://cloudblog.withgoogle.com/products/containers-kubernetes/5-ways-google-cloud-is-making-gke-the-best-place-to-run-kubernetes/amp/) -- [whizlabs.com: Introduction To Google Cloud Platform](https://www.whizlabs.com/blog/google-cloud-platform/) -- [blog.doit-intl.com: How to Set Up Multi-Cluster Load Balancing with GKE](https://blog.doit-intl.com/how-to-setup-multi-cluster-load-balancing-with-gke-4b407e1f3dff) -- [codeburst.io: Google Kubernetes Engine Logging by Example](https://codeburst.io/google-kubernetes-engine-logging-by-example-df6946dcba6b) -- [cloud.google.com: Discover and invoke services across clusters with GKE multi-cluster services](https://cloud.google.com/blog/products/containers-kubernetes/introducing-gke-multi-cluster-services) +* [POKE - Provision Opinionated Kubernetes on EKS](https://github.com/bit-cloner/poke) Poke is infrastructure as software to provision EKS cluster in an opinianated way. Code is written in nodejs utilising pulumi framework. It is opinionated in such a way to improve security and simplicity.Consider this similar to terraform module. This package can be used to provision eks clusters declaratively with immutability and repeatability. +* [clickittech.com: Kubernetes Multi tenancy with Amazon EKS: Best practices and considerations](https://www.clickittech.com/saas/kubernetes-multi-tenancy/) ### Kubesphere - [kubesphere.io](https://kubesphere.io/) The Kubernetes platform tailored for hybrid multicloud. KubeSphere is a distributed operating system managing cloud native applications with Kubernetes as its kernel, and provides plug-and-play architecture for the seamless integration of third-party applications to boost its ecosystem. @@ -1571,6 +1717,7 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops ### Microk8s - [**Microk8s**](https://microk8s.io/) - [Kata Containers on MicroK8s](https://github.com/didier-durand/microk8s-kata-containers) This repository encompasses a fully scripted Github workflow to test the transparent use of the runtime for Kata Containers (Katas) on MicroK8s +- [MicroK8s & Kubernetes security benchmark from CIS](https://github.com/didier-durand/microk8s-kube-bench) ### k8s-tew - [**k8s-tew**](https://github.com/darxkies/k8s-tew) Kubernetes is a fairly complex project. For a newbie it is hard to understand and also to use. While [Kelsey Hightower’s Kubernetes The Hard Way](https://github.com/kelseyhightower/kubernetes-the-hard-way), on which this project is based, helps a lot to understand Kubernetes, it is optimized for the use with Google Cloud Platform. @@ -1622,6 +1769,9 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops - [k0s](https://k0sproject.io/) - [infoq.com: Mirantis Announces k0s, a New Kubernetes Distribution](https://www.infoq.com/news/2020/12/k0s-kubernetes-distribution/) +#### K0s +- [K0s - Zero Friction Kubernetes](https://github.com/k0sproject/k0s) k0s is an all-inclusive Kubernetes distribution with all the required bells and whistles preconfigured to make building a Kubernetes clusters a matter of just copying an executable to every host and running it. + ## Cloud Development Kit (CDK) for Kubernetes * [cdk8s.io 🌟](https://cdk8s.io/) Define Kubernetes apps and components using familiar languages. cdk8s is an open-source software development framework for defining Kubernetes applications and reusable abstractions using familiar programming languages and rich object-oriented APIs. cdk8s apps synthesize into standard Kubernetes manifests which can be applied to any Kubernetes cluster. * [github.com/awslabs/cdk8s](https://github.com/awslabs/cdk8s) @@ -1705,6 +1855,10 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops + + + +
## Kubernetes Scripts diff --git a/docs/kustomize.md b/docs/kustomize.md index 32171fce..84774266 100644 --- a/docs/kustomize.md +++ b/docs/kustomize.md @@ -8,4 +8,6 @@ - [Kubestack Gitops Framework](https://github.com/kbst/terraform-kubestack) is a Gitops framework built on Terraform and Kustomize - [3 ways to customize off-the-shelf Helm charts with Kustomize - Kubernetes](https://tech.aabouzaid.com/2020/09/3-ways-to-customize-off-the-shelf-helm-charts-with-kustomize-kubernetes.html) - [dex.dev: YAML Templating Solutions: Helm & Kustomize](https://www.dex.dev/dex-videos/templating-solutions) Writing config files by hand is like coding with Notepad instead of an IDE. Let's find a better way, and take an overview of the popular solutions Helm & Kustomize. -- [Secretize 🌟](https://github.com/bbl/secretize) Secretize is a kustomize plugin that helps generating kubernetes secrets from various sources such as AWS Secret Manager & Azure Vault. It's like a swiss army knife, but for kubernetes secrets. \ No newline at end of file +- [Secretize 🌟](https://github.com/bbl/secretize) Secretize is a kustomize plugin that helps generating kubernetes secrets from various sources such as AWS Secret Manager & Azure Vault. It's like a swiss army knife, but for kubernetes secrets. +- [blog.stack-labs.com: Kustomize - The right way to do templating in Kubernetes](https://blog.stack-labs.com/code/kustomize-101/) +- [harness.io: Comparing Helm vs Kustomize 🌟](https://harness.io/blog/devops/helm-vs-kustomize/) \ No newline at end of file diff --git a/docs/linux-dev-env.md b/docs/linux-dev-env.md index d7465300..1751e4cd 100644 --- a/docs/linux-dev-env.md +++ b/docs/linux-dev-env.md @@ -15,6 +15,7 @@ multiple versions of software on the same system, without affecting system-wide * [Distro installation added to WSL --install in Windows 10 insiders preview build 20246](https://devblogs.microsoft.com/commandline/distro-installation-added-to-wsl-install-in-windows-10-insiders-preview-build-20246/) * [pandorafms.com: Qué es, cómo instalar WSL2 y por qué es una gran noticia para el sector TI](https://pandorafms.com/blog/es/wsl2/) * [dev.to: Install Docker on Windows (WSL) without Docker Desktop 🌟](https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9) +* [techrepublic.com: Windows Subsystem for Linux 2: The GUI features developers have been asking for](https://www.techrepublic.com/article/windows-subsystem-for-linux-2-the-gui-features-developers-have-been-asking-for/) ## Windows Terminal - [Windows Terminal 1.0](https://devblogs.microsoft.com/commandline/windows-terminal-1-0/) diff --git a/docs/linux.md b/docs/linux.md index 017a6cb6..f6de9e01 100644 --- a/docs/linux.md +++ b/docs/linux.md @@ -2,6 +2,7 @@ - [RHEL](#rhel) - [VIM](#vim) - [SSH](#ssh) +- [OpenSSL](#openssl) - [Linux Blogs](#linux-blogs) - [Spanish Linux Blogs](#spanish-linux-blogs) - [Youtube](#youtube) @@ -29,13 +30,15 @@ - [zdnet.com: Red Hat introduces free RHEL for small production workloads and development teams](https://www.zdnet.com/google-amp/article/red-hat-introduces-free-rhel-for-small-production-workloads-development-teams/) In response to complaints about Red Hat's latest plans for CentOS Linux, Red Hat will start offering no-cost Red Hat Enterprise Linux for small production workloads and customer development teams. - [enterpriseai.news: Red Hat’s Disruption of CentOS Unleashes Storm of Dissent](https://www.enterpriseai.news/2021/01/22/red-hats-disruption-of-centos-unleashes-storm-of-dissent/) - [arstechnica.com: Why Red Hat killed CentOS—a CentOS board member speaks](https://arstechnica.com/gadgets/2021/01/on-the-death-of-centos-red-hat-liaison-brian-exelbierd-speaks/) "The CentOS Board doesn't get to decide what Red Hat engineering teams do." +- [zdnet.com: Red Hat introduces free RHEL for open-source, non-profit organizations](https://www.zdnet.com/article/free-red-hat-enterprise-linux-for-open-source-non-profit-organizations/) Some CentOS users still aren't happy, but Red Hat is keeping its promise to open-source organizations that they'll have access to a free version of RHEL. ## VIM - [VimWiki](https://github.com/vimwiki/vimwiki) - [redhat.com: Vim: Basic and intermediate commands](https://www.redhat.com/sysadmin/vim-commands) - [dev.to: Another one short Vim cheat sheet](https://dev.to/gleb_the_human/another-one-short-vim-cheat-sheet-39fc) +- [thevaluable.dev: A Vim Guide for Advanced Users](https://thevaluable.dev/vim-advanced/) -## SSH +## SSH - [gravitational.com: How to SSH Properly 🌟](https://gravitational.com/blog/how-to-ssh-properly/) - [19 Common SSH Commands In Linux With Examples](https://phoenixnap.com/kb/linux-ssh-commands) - [commandlinefu.com/commands/matching/ssh](https://www.commandlinefu.com/commands/matching/ssh/c3No/sort-by-votes) @@ -48,6 +51,9 @@ - [paepper.com: How to properly manage ssh keys for server access](https://www.paepper.com/blog/posts/how-to-properly-manage-ssh-keys-for-server-access/) - [goteleport.com: SSH Certificates Security. SSH Access Hardening 🌟](https://goteleport.com/blog/ssh-certificates/) +## OpenSSL +- [redhat.com: 6 OpenSSL command options that every sysadmin should know](https://www.redhat.com/sysadmin/6-openssl-commands) Look beyond generating certificate signing requests and see how OpenSSL commands can display practical information about certificates. + ## Linux Blogs - [The Linux Foundation](http://www.linuxfoundation.org/) - [tecmint.com 🌟](https://www.tecmint.com/) @@ -112,6 +118,14 @@ - [redhat.com: 5 questions to ask during your next sysadmin interview](https://www.redhat.com/sysadmin/5-questions-interview) - [oilshell: Alternative shells](https://github.com/oilshell/oil/wiki/Alternative-Shells) - [Timezone Bullshit](https://blog.wesleyac.com/posts/timezone-bullshit) +- [cyberciti.biz: How to check memory utilization in Linux](https://www.cyberciti.biz/faq/how-to-check-memory-utilization-in-linux/) +- [tecmint.com: Different Ways to Use Column Command in Linux](https://www.tecmint.com/linux-column-command/) +- [opensource.com: How to use the Linux grep command](https://opensource.com/article/21/3/grep-cheat-sheet) +- [dnschecker.org 🌟](https://dnschecker.org/) +- [tecmint.com: 10 Useful Commands to Collect System and Hardware Information in Linux](https://www.tecmint.com/commands-to-collect-system-and-hardware-information-in-linux) +- [cyberciti.biz: How To Find Largest Top 10 Files and Directories On Linux / UNIX / BSD](https://www.cyberciti.biz/faq/how-do-i-find-the-largest-filesdirectories-on-a-linuxunixbsd-filesystem/) +- [cyberciti.biz: How to restart systemd without rebooting Linux when critical libraries installed](https://www.cyberciti.biz/faq/how-to-restart-systemd-without-rebooting-linux-when-critical-libraries-installed/) +- [cyberciti.biz: How to install ncdu on Linux / Unix to see disk usage](https://www.cyberciti.biz/open-source/install-ncdu-on-linux-unix-ncurses-disk-usage/) ## Bash - [igoroseledko.com: Checking Multiple Variables in Bash](https://www.igoroseledko.com/checking-multiple-variables-in-bash/) @@ -119,7 +133,10 @@ - [dev.to: Introduction to Bash Scripting - A DO Hackathon Submission](https://dev.to/bobbyiliev/introduction-to-bash-scripting-5571) - [datafix.com.au: BASHing data - Data ops on the Linux command line 🌟](https://datafix.com.au/BASHing/) - [medium: How to trigger an action at the end of the Shell/Bash script](https://medium.com/bash-tips-and-tricks/how-to-trigger-an-action-at-the-end-of-the-shell-bash-script-52b0ba9c157e) Using Bash/Shell trap, a built-in command to define any action to be executed before exiting the Bash or Shell script. You can define multiple actions and per signal. - +- [redhat.com: Bash scripting: How to read data from text files](https://www.redhat.com/sysadmin/data-text-files) Here's how to extract data from a text file such as reading in a list of servers to test connectivity to them. +- [Over 100 sed one-liners](http://www.pement.org/sed/sed1line.txt) +- [github: Safe ways to do things in bash](https://github.com/anordal/shellharden/blob/master/how_to_do_things_safely_in_bash.md) + ## Zsh - [Oh My Zsh](https://ohmyz.sh/) Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout... @@ -178,7 +195,9 @@ - [Linux networking examples and tutorials for advanced users](https://github.com/knorrie/network-examples) Includes lab examples for lxc, bgp, vpn, & more - [blog.pandorafms.org: Useful Network commands](https://blog.pandorafms.org/network-commands/) VNStat, ping, traceroute, ping, arp, curl and wget, netstat, whois, ssh, tcpdump, ngrep, nmap, netcat, lsof, iptraf - [Diferencias entre servidor proxy y servidor proxy inverso](https://www.redeszone.net/tutoriales/servidores/diferencias-proxy-vs-proxy-inverso/) -- [cyberciti.biz: Linux ip Command Examples](https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/) +- [cyberciti.biz: Linux ip Command Examples 🌟](https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/) +- [cyberciti.biz: Linux: 25 Iptables Netfilter Firewall Examples For New SysAdmins](https://www.cyberciti.biz/tips/linux-iptables-examples.html) +- [redhat.com: 6 tcpdump network traffic filter options](https://www.redhat.com/sysadmin/tcpdump-part-one) The first six of eighteen common tcpdump options that you should use for network troubleshooting and analysis. --- diff --git a/docs/maven-gradle.md b/docs/maven-gradle.md index b6868381..3cf64af4 100644 --- a/docs/maven-gradle.md +++ b/docs/maven-gradle.md @@ -31,6 +31,7 @@ * [howtodoinjava.com/maven](https://howtodoinjava.com/maven/) * [Dzone: 7 Tips to Achieve High-Availability(HA) For Your Maven Repository](https://dzone.com/articles/7-tips-to-achieve-high-availabilityha-for-your-mav-1) * [maarten.mulders.it: What's New in Maven 4](https://maarten.mulders.it/2020/11/whats-new-in-maven-4/) +* [dev.to: Maven Plugin Configuration - The (Unknown) Tiny Details](https://dev.to/khmarbaise/maven-plugin-configuration-the-unknown-tiny-details-1emm) ### Scaffolding a project with Maven (maven archetype) * [vogella.com: Maven for Building Java application - Tutorial](https://www.vogella.com/tutorials/ApacheMaven/article.html) diff --git a/docs/message-queue.md b/docs/message-queue.md index d0abc90d..f7ba9f00 100644 --- a/docs/message-queue.md +++ b/docs/message-queue.md @@ -16,6 +16,7 @@ - [Data Mesh](#data-mesh) - [Data Processing (aka Streaming Data, Data Pipeline or Big Data Pipeline)](#data-processing-aka-streaming-data-data-pipeline-or-big-data-pipeline) - [Apache Kafka](#apache-kafka) + - [Strimzi kubernetes operator for apache kafka](#strimzi-kubernetes-operator-for-apache-kafka) - [Banzai Cloud Supertubes (Cloud Native Kafka implementation)](#banzai-cloud-supertubes-cloud-native-kafka-implementation) - [Confluent Cloud (Apache Kafka Re-engineered for the Cloud)](#confluent-cloud-apache-kafka-re-engineered-for-the-cloud) - [Redpanda (kafka alternative). A modern streaming platform for mission critical workloads](#redpanda-kafka-alternative-a-modern-streaming-platform-for-mission-critical-workloads) @@ -32,6 +33,7 @@ - [Red Hat AMQ Streams](#red-hat-amq-streams) - [Open Data Hub AI-as-a-Service (AIaaS) platform](#open-data-hub-ai-as-a-service-aiaas-platform) - [KEDA. Kubernetes Event Driven Autoscaling](#keda-kubernetes-event-driven-autoscaling) +- [Platforms for collecting, storing and routing customer event data](#platforms-for-collecting-storing-and-routing-customer-event-data) - [eBooks](#ebooks) - [Related](#related) - [Questions and Answers](#questions-and-answers) @@ -47,6 +49,8 @@ - [thenewstack.io: The Rise of the Event Streaming Database 🌟](https://thenewstack.io/the-rise-of-the-event-streaming-database/) - [cncf.io: The need for Kubernetes Native Messaging Platform in Hybrid Cloud Environment](https://www.cncf.io/blog/2020/11/03/the-need-for-kubernetes-native-messaging-platform-in-hybrid-cloud-environment/) - [wiprodigital.com: A Guide to Enterprise Event-Driven Architecture](https://wiprodigital.com/2020/11/10/a-guide-to-enterprise-event-driven-architecture/) +- [medium: Introduction to Event-Driven Architecture](https://medium.com/microservicegeeks/introduction-to-event-driven-architecture-e94ef442d824) The essential concepts that every developer should know +- [ibm.com: Event-driven cloud-native applications (microservices)](https://www.ibm.com/cloud/architecture/architecture/practices/event-driven-cloud-native-apps-architecture) The event backbone is being part of the microservices mesh, providing the publish-and-subscribe communication between microservices and enabling the support of loosely coupled event-driven microservices. ## Message Brokers - [Apache ActiveMQ](https://activemq.apache.org/) @@ -75,6 +79,7 @@ - [Apache Camel K](https://camel.apache.org/camel-k/latest/) is a lightweight cloud-integration platform that runs natively on Kubernetes. Based on the famous Apache Camel, Camel K is designed and optimized for serverless and microservices architectures. - [developers.redhat.com: Six reasons to love Camel K](https://developers.redhat.com/blog/2020/05/12/six-reasons-to-love-camel-k/) - [developers.redhat.com: Extending Kafka connectivity with Apache Camel Kafka connectors](https://developers.redhat.com/blog/2020/05/19/extending-kafka-connectivity-with-apache-camel-kafka-connectors/) +- [developers.redhat.com: Design event-driven integrations with Kamelets and Camel K](https://developers.redhat.com/blog/2021/04/02/design-event-driven-integrations-with-kamelets-and-camel-k) ### KubeMQ message broker - [KubeMQ.io: Kubernetes Native Message Queue Broker](https://kubemq.io/) @@ -113,24 +118,29 @@ comsysto about their usage of Debezium, touching on many details like outbox pattern, Avro schemas, Postgres on RDS etc. - [noti.st: Change Data Capture with Flink SQL and Debezium 🌟](https://noti.st/morsapaes/liQzgs/change-data-capture-with-flink-sql-and-debezium) - [vladmihalcea.com: A beginner’s guide to CDC (Change Data Capture)](https://vladmihalcea.com/a-beginners-guide-to-cdc-change-data-capture/) +- [shopify.engineering: Capturing Every Change From Shopify’s Sharded Monolith](https://shopify.engineering/capturing-every-change-shopify-sharded-monolith) +- [developers.redhat.com: Db2 and Oracle connectors coming to Debezium 1.4 GA](https://developers.redhat.com/blog/2021/03/25/db2-and-oracle-connectors-coming-to-debezium-1-4-ga) ## Red Hat Integration service registry and Apicurio - [Red Hat Integration service registry](https://developers.redhat.com/blog/2019/12/16/getting-started-with-red-hat-integration-service-registry/) - [**Apicurio** Registry](https://github.com/apicurio/apicurio-registry) An API/Schema registry - stores APIs and Schemas. - [Event streaming and data federation: A citizen integrator’s story](https://developers.redhat.com/blog/2020/06/12/event-streaming-and-data-federation-a-citizen-integrators-story/) +- [redhat.com: Using a schema registry to ensure data consistency between microservices](https://www.redhat.com/architect/schema-registry) Make interservice communication easier by using a schema registry. ## Data Mesh - [martinfowler.com: Data Mesh Principles and Logical Architecture](https://martinfowler.com/articles/data-mesh-principles.html) - [infoq.com: Data Mesh Principles and Logical Architecture Defined](https://www.infoq.com/news/2020/12/data-mesh-architecture/) +- [martinfowler.com: How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh](https://martinfowler.com/articles/data-monolith-to-mesh.html) ## Data Processing (aka Streaming Data, Data Pipeline or Big Data Pipeline) - [Awesome Streaming](https://github.com/manuzhang/awesome-streaming) A curated list of awesome [streaming (stream processing)](https://www.oreilly.com/radar/the-world-beyond-batch-streaming-101/) frameworks, applications, readings and other resources. - [cloudblog.withgoogle.com: Turn any Dataflow pipeline into a reusable template](https://cloudblog.withgoogle.com/products/data-analytics/create-templates-from-any-dataflow-pipeline/amp/) - [thenewstack.io: Part 1: The Evolution of Data Pipeline Architecture](https://thenewstack.io/part-1-the-evolution-of-data-pipeline-architecture/) +- [eng.uber.com: Uber’s Journey Toward Better Data Culture From First Principles](https://eng.uber.com/ubers-journey-toward-better-data-culture-from-first-principles/) +- [satishchandragupta.com: Scalable Efficient Big Data Pipeline Architecture](https://www.satishchandragupta.com/tech/scalable-efficient-big-data-analytics-machine-learning-pipeline-architecture-on-cloud.html) ### Apache Kafka - [Apache Kafka](https://kafka.apache.org/) -- [developers.redhat.com: how easy to deploy and configure a Kafka Connect on Kubernetes through strimziio operator and use secrets](https://developers.redhat.com/blog/2020/02/14/using-secrets-in-apache-kafka-connect-configuration/) - [developers.redhat.com: Using secrets in Kafka Connect configuration](https://developers.redhat.com/blog/2020/02/14/using-secrets-in-apache-kafka-connect-configuration/) - [developers.redhat.com: Capture database changes with Debezium Apache Kafka connectors](https://developers.redhat.com/blog/2020/04/14/capture-database-changes-with-debezium-apache-kafka-connectors/) - [Awesome Kafka](https://github.com/monksy/awesome-kafka/blob/master/tools.md) @@ -147,7 +157,6 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [confluent.fr: Infrastructure Modernization with Google Anthos and Apache Kafka](https://www.confluent.fr/blog/modernize-apps-and-infrastructure-with-anthos-confluent-kafka/) - [confluent.io: Apache Kafka DevOps with Kubernetes and GitOps](https://www.confluent.io/blog/kafka-devops-with-confluent-kubernetes-and-gitops/) - [Build a data streaming pipeline using Kafka Streams and Quarkus](https://developers.redhat.com/blog/2020/09/28/build-a-data-streaming-pipeline-using-kafka-streams-and-quarkus/) -- [strimzi.io: Optimizing Kafka producers](https://strimzi.io/blog/2020/10/15/producer-tuning/) - [levelup.gitconnected.com: Kafka for Engineers 🌟](https://levelup.gitconnected.com/kafka-for-engineers-975feaea6067) Here are things about Kafka that you need to understand as a software engineer. - [confluent.io: How to Build and Deploy Scalable Machine Learning in Production with Apache Kafka](https://www.confluent.io/blog/build-deploy-scalable-machine-learning-production-apache-kafka/) - [banzaicloud.com: Kafka on Kubernetes - using etcd 🌟](https://banzaicloud.com/blog/kafka-on-etcd/) @@ -155,9 +164,6 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [medium: Logs & Offsets: (Near) Real Time ELT with Apache Kafka + Snowflake](https://medium.com/convoy-tech/logs-offsets-near-real-time-elt-with-apache-kafka-snowflake-473da1e4d776) - [infoq.com: Building a SQL Database Audit System using Kafka, MongoDB and Maxwell's Daemon](https://www.infoq.com/articles/database-audit-system-kafka/) - [tecmint: How to Install Apache Kafka in CentOS/RHEL 7](https://www.tecmint.com/install-apache-kafka-in-centos-rhel/) -- [strimzi.io: Optimizing Kafka consumers 🌟](https://strimzi.io/blog/2021/01/07/consumer-tuning/) -- [strimzi.io: Optimizing Kafka producers 🌟](https://strimzi.io/blog/2020/10/15/producer-tuning/) -- [developers.redhat.com: Introduction to Strimzi: Apache Kafka on Kubernetes (KubeCon Europe 2020) 🌟](https://developers.redhat.com/blog/2020/08/14/introduction-to-strimzi-apache-kafka-on-kubernetes-kubecon-europe-2020/) - [medium: Processing guarantees in Kafka](https://medium.com/@andy.bryant/processing-guarantees-in-kafka-12dd2e30be0e) "Duplicates and lost messages are due not only to features of the messaging systems, but in the design of producer and consumer applications as well." One of the best posts on processing guarantees in kafka. - [davidxiang.com: Kafka As A Database? Yes Or No](https://davidxiang.com/2021/01/10/kafka-as-a-database/) - [medium: How Pinterest runs Kafka at scale](https://medium.com/pinterest-engineering/how-pinterest-runs-kafka-at-scale-ff9c6f735be) @@ -165,6 +171,33 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [medium: 4 Microservices Caching Patterns at Wix](https://medium.com/wix-engineering/4-microservices-caching-patterns-at-wix-b4dfee1ae22f) - [Confluent.io: Intro to Apache Kafka: How Kafka Works 🌟](https://www.confluent.io/blog/apache-kafka-intro-how-kafka-works/) - [levelup.gitconnected.com: Kafka for Engineers](https://levelup.gitconnected.com/kafka-for-engineers-975feaea6067) +- [medium: Microservices in Rust with Kafka](https://medium.com/digitalfrontiers/microservices-in-rust-with-kafka-2b671295b24e) +- [medium: Apache Kafka in a Nutshell 🌟](https://medium.com/swlh/apache-kafka-in-a-nutshell-5782b01d9ffb) Architecture, Use Cases, and a Getting Started guide — rolled into one +- [confluent.io: Simplifying Apache Kafka Multi-Cluster Management Using Control Center and Cluster Registry](https://www.confluent.io/blog/simplify-multiple-kafka-cluster-management-monitoring-using-confluent) +- [kai-waehner.de: App Modernization and Hybrid Cloud Architectures with Apache Kafka](https://www.kai-waehner.de/blog/2021/03/10/apache-kafka-app-modernization-legacy-hybrid-cloud-native-architecture) +- [kai-waehner.de: Apache Kafka and MQTT (Part 1 of 5) – Overview and Comparison](https://www.kai-waehner.de/blog/2021/03/15/apache-kafka-mqtt-sparkplug-iot-blog-series-part-1-of-5-overview-comparison/) +- [medium: Solutions to Communication Problems in Microservices using Apache Kafka and Kafka Lens](https://medium.com/@harmonh/solutions-to-communication-problems-in-microservices-using-apache-kafka-and-kafka-lens-9b6d453de352) +- [kafka-tutorials.confluent.io 🌟](https://kafka-tutorials.confluent.io/) + - [kafka-tutorials.confluent.io: How to join a stream and a lookup table 🌟](https://kafka-tutorials.confluent.io/join-a-stream-to-a-table/kstreams.html) If I have events in a Kafka topic and a table of reference data (aka a lookup table), how can I join each event in the stream to a piece of data in the table based on a common key? +- [confluent.io: DevOps for Apache Kafka with Kubernetes and GitOps 🌟](https://www.confluent.io/blog/devops-for-apache-kafka-with-kubernetes-and-gitops) +- [dzone.com: Microservices, Event-Driven Architecture and Kafka 🌟](https://dzone.com/articles/microservices-event-driven-architecture-and-kafka) +- [medium: Understanding Kafka Topic Partitions](https://medium.com/event-driven-utopia/understanding-kafka-topic-partitions-ae40f80552e8) Everything in Kafka is modeled around partitions. They rule Kafka’s storage, scalability, replication, and message movement. +- [kafka-tutorials.confluent.io: How to count messages in a Kafka topic](https://kafka-tutorials.confluent.io/how-to-count-messages-on-a-kafka-topic/ksql.html) +- [confluent.io: Apache Kafka Made Simple: A First Glimpse of a Kafka Without ZooKeeper 🌟](https://www.confluent.io/blog/kafka-without-zookeeper-a-sneak-peek/) +- [piotrminkowski.com: Knative Eventing with Kafka and Quarkus](https://piotrminkowski.com/2021/03/31/knative-eventing-with-kafka-and-quarkus/) +- [blog.cloudera.com: Scalability of Kafka Messaging using Consumer Groups](https://blog.cloudera.com/scalability-of-kafka-messaging-using-consumer-groups/) +- [thenewstack.io: Beyond the Quickstart: Running Apache Kafka as a Service on Kubernetes](https://thenewstack.io/beyond-the-quickstart-running-apache-kafka-as-a-service-on-kubernetes/) +- [towardsdatascience.com: You Can Replace Kafka with a Database](https://towardsdatascience.com/you-can-replace-kafka-with-a-database-39e13b610b63) +- [Handling Retries in Kafka: If You’re Using Kafka With Your Microservices, You’re Probably Handling Retries Wrong](https://dt-23597.medium.com/if-youre-using-kafka-with-your-microservices-you-re-probably-handling-retries-wrong-8492890899fa) + +#### Strimzi kubernetes operator for apache kafka +- [strimzi.io](https://strimzi.io/) +- [developers.redhat.com: how easy to deploy and configure a Kafka Connect on Kubernetes through strimziio operator and use secrets](https://developers.redhat.com/blog/2020/02/14/using-secrets-in-apache-kafka-connect-configuration/) +- [developers.redhat.com: Introduction to Strimzi: Apache Kafka on Kubernetes (KubeCon Europe 2020) 🌟](https://developers.redhat.com/blog/2020/08/14/introduction-to-strimzi-apache-kafka-on-kubernetes-kubecon-europe-2020/) +- [strimzi.io: Optimizing Kafka producers](https://strimzi.io/blog/2020/10/15/producer-tuning/) +- [strimzi.io: Optimizing Kafka consumers 🌟](https://strimzi.io/blog/2021/01/07/consumer-tuning/) +- [strimzi.io: Optimizing Kafka producers 🌟](https://strimzi.io/blog/2020/10/15/producer-tuning/) +- [pepy.tech/project/strimzi-kafka-cli 🌟](https://pepy.tech/project/strimzi-kafka-cli) - [pypi.org/project/strimzi-kafka-cli](https://pypi.org/project/strimzi-kafka-cli/)
[![airflow vs kafka debezium](images/airflow_vs_debezium.jpg)](https://medium.com/convoy-tech/logs-offsets-near-real-time-elt-with-apache-kafka-snowflake-473da1e4d776) @@ -180,6 +213,7 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - Focus on building apps and not managing clusters with a scalable, resilient and secure event streaming platform. Event streaming with Kafka made simple on AWS, Azure and GCP clouds. - [mongodb.com: DaaS with MongoDB and Confluent](https://www.mongodb.com/blog/post/daa-s-with-mongo-db-and-confluent) - [confluent.io: Confluent and Microsoft Announce Strategic Alliance](https://www.confluent.io/blog/confluent-microsoft-announce-strategic-alliance/) +- [confluent.io: Monitoring Your Event Streams: Integrating Confluent with Prometheus and Grafana](https://www.confluent.io/blog/monitor-kafka-clusters-with-prometheus-grafana-and-confluent) ### Redpanda (kafka alternative). A modern streaming platform for mission critical workloads - [Redpanda 🌟](https://vectorized.io/) is a Kafka® compatible event streaming platform. No Zookeeper, no JVM, and no code changes required. Use all your favorite open source tooling - 10x faster. @@ -261,6 +295,9 @@ Red Hat AMQ 7|JBoss AMQ 7 (Broker) or Red Hat AMQ 7 Suite|Apache ActiveMQ Artemi - [Dzone: Autoscaling Your Kubernetes Microservice with KEDA](https://dzone.com/articles/autoscaling-your-kubernetes-microservice-with-keda) Introduction to KEDA—event-driven autoscaler for Kubernetes, Apache Camel, and ActiveMQ Artemis—and how to use it to scale a Java microservice on Kubernetes. - [tomd.xyz: Event-driven integration on Kubernetes with Camel & KEDA 🌟](https://tomd.xyz/kubernetes-event-driven-keda/) Can we develop apps in Kubernetes that autoscale based on events? Perhaps, with this example using KEDA, ActiveMQ and Apache Camel. +## Platforms for collecting, storing and routing customer event data +- [rudderstack.com](https://rudderstack.com/) - [opensource.com: Stream event data with rudderstack](https://opensource.com/article/21/4/event-streaming-rudderstack) + ## eBooks - [O'Really: Streaming data](http://streamingsystems.net/) diff --git a/docs/mlops.md b/docs/mlops.md index d00c158e..766f8085 100644 --- a/docs/mlops.md +++ b/docs/mlops.md @@ -3,10 +3,16 @@ - [dafriedman97.github.io: Machine Learning from Scratch](https://dafriedman97.github.io/mlbook/content/introduction.html) Derivations in Concept and Code. - [cortex.dev: How to build a pipeline to retrain and deploy models](https://www.cortex.dev/post/how-to-build-a-pipeline-to-retrain-and-deploy-models) - [github: A very Long never ending Learning around Data Engineering & Machine Learning](https://github.com/abhishek-ch/around-dataengineering) +- [towardsdatascience.com: A Kubernetes architecture for machine learning web-application deployments](https://towardsdatascience.com/a-kubernetes-architecture-for-machine-learning-web-application-deployments-632f7765ef29) Use Kubernetes to reduce machine learning infrastructure costs and scale resources with ease. +- [cloud.google.com: How to use a machine learning model from a Google Sheet using BigQuery ML](https://cloud.google.com/blog/topics/developers-practitioners/how-use-machine-learning-model-google-sheet-using-bigquery-ml) +- [itnext.io: Building ML Componentes on Kubernetes](https://itnext.io/building-ml-componentes-on-kubernetes-fc7e24cb9269) +- [towardsdatascience.com: Deploying An ML Model With FastAPI — A Succinct Guide](https://towardsdatascience.com/deploying-an-ml-model-with-fastapi-a-succinct-guide-69eceda27b21) +- [analyticsvidhya.com: Bring DevOps To Data Science With MLOps](https://www.analyticsvidhya.com/blog/2021/04/bring-devops-to-data-science-with-continuous-mlops/) ## Kubeflow - [kubeflow](https://www.kubeflow.org/) The Machine Learning Toolkit for Kubernetes - [medium.com: Machine Learning using Kubeflow](https://medium.com/cloud-techies/machine-learning-using-kubeflow-ad7c9f767df0) +- [infracloud.io: Machine Learning Orchestration on Kubernetes using Kubeflow](https://www.infracloud.io/blogs/machine-learning-orchestration-kubernetes-kubeflow/)
diff --git a/docs/monitoring.md b/docs/monitoring.md index d59b14f5..f2404c25 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -10,6 +10,7 @@ - [Prometheus for OpenShift 3.11](#prometheus-for-openshift-311) - [OpenShift 4](#openshift-4) - [Prometheus](#prometheus) + - [Prometheus Demo](#prometheus-demo) - [Prometheus Storage](#prometheus-storage) - [Scalability, High Availability (HA) and Long-Term Storage](#scalability-high-availability-ha-and-long-term-storage) - [Storage Solutions for Prometheus](#storage-solutions-for-prometheus) @@ -34,6 +35,7 @@ - [Grafana](#grafana) - [Grafana Dashboards](#grafana-dashboards) - [Grafana 7](#grafana-7) + - [Grafana Loki](#grafana-loki) - [Proof of Concept: ActiveMQ Monitoring with Prometheus](#proof-of-concept-activemq-monitoring-with-prometheus) - [PoC: ActiveMQ 5.x Monitoring with Telegraf Collector, Prometheus and Grafana Dashboard 10702](#poc-activemq-5x-monitoring-with-telegraf-collector-prometheus-and-grafana-dashboard-10702) - [Deployment and Configuration](#deployment-and-configuration) @@ -45,6 +47,7 @@ - [Prometheus and Grafana Interactive Learning](#prometheus-and-grafana-interactive-learning) - [Logging & Centralized Log Management](#logging--centralized-log-management) - [ElasticSearch](#elasticsearch) + - [OpenSearch](#opensearch) - [Performance](#performance) - [List of Performance Analysis Tools](#list-of-performance-analysis-tools) - [Thread Dumps. Debugging Java Applications](#thread-dumps-debugging-java-applications) @@ -89,6 +92,10 @@ * [thenewstack.io: Monitoring as Code: What It Is and Why You Need It 🌟](https://thenewstack.io/monitoring-as-code-what-it-is-and-why-you-need-it/) * [thenewstack.io: Observability Won’t Replace Monitoring (Because It Shouldn’t) 🌟](https://thenewstack.io/observability-wont-replace-monitoring-because-it-shouldnt/) * [devopscurry.com: Understanding Container Monitoring and popular Container Monitoring Tools in 2021](https://devopscurry.com/understaning-container-monitoring-and-popular-container-monitoring-tools-in-2021/) +* [matiasmct.medium.com: Observability at Scale](https://matiasmct.medium.com/observability-at-scale-52d0d9a5fb9b) +* [dynatrace.com: How to solve the challenges of multicloud AWS, Azure and GCP observability](https://www.dynatrace.com/news/blog/how-to-solve-the-challenges-of-multicloud-aws-azure-and-gcp-observability/) +* [logz.io: Top 11 Open Source Monitoring Tools for Kubernetes 🌟](https://logz.io/blog/open-source-monitoring-tools-for-kubernetes/) +* [thenewstack.io: Kubernetes Observability Challenges in Cloud Native Architecture 🌟](https://thenewstack.io/kubernetes-observability-challenges-in-cloud-native-architecture/) ### Key Performance Indicator (KPI) * [KPIs](https://kpi.org/KPI-Basics) @@ -208,9 +215,20 @@ OpenShift Cluster Monitoring components cannot be extended since they are read o * [devclass.com: Safety…first? Prometheus 2.24 finally features TLS on HTTP serving endpoints](https://devclass.com/2021/01/07/prometheus-2_24/) * [sysadminxpert.com: Steps to Monitor Linux Server using Prometheus](https://sysadminxpert.com/steps-to-monitor-linux-server-using-prometheus/) * [medium.com: Prometheus-Grafana : Node Monitoring on Kubernetes](https://medium.com/@akshitverma8191/prometheus-grafana-node-monitoring-on-kubernetes-79fd8311b56d) +* [zerodha.tech: Infrastructure monitoring with Prometheus at Zerodha](https://zerodha.tech/blog/infra-monitoring-at-zerodha/) +* [devopscube.com: How to Setup Prometheus Monitoring On Kubernetes Cluster 🌟](https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/) +* [prometheus-operator.dev 🌟](https://prometheus-operator.dev) +* [gabrieltanner.org: Golang Application monitoring using Prometheus](https://gabrieltanner.org/blog/collecting-prometheus-metrics-in-golang) +* [promlens.com 🌟](https://promlens.com/) The power tool for querying Prometheus. Build, understand, and fix your queries much more effectively with the ultimate query builder for PromQL +* [timber.io: PromQL For Humans 🌟](https://timber.io/blog/promql-for-humans) +* [medium: Prometheus monitoring with Elastic Stack in Kubernetes](https://medium.com/avmconsulting-blog/prometheus-monitoring-with-elastic-stack-in-kubernetes-5cf0aaa7ce04) +* [grafana.com: How we use metamonitoring Prometheus servers to monitor all other Prometheus servers at Grafana Labs](https://grafana.com/blog/2021/04/08/how-we-use-metamonitoring-prometheus-servers-to-monitor-all-other-prometheus-servers-at-grafana-labs/) [![prometheus architecture](images/prometheus-architecture.png)](https://github.com/prometheus/prometheus) +### Prometheus Demo +- [Prometheus Demo: prometheus.demo.do.prometheus.io 🌟](https://prometheus.demo.do.prometheus.io) + ### Prometheus Storage * Proporciona etiquetado clave-valor y "time-series". La propia documentación de Prometheus explica cómo se gestiona el [almacenamiento en disco](https://prometheus.io/docs/prometheus/latest/storage/) (**Prometheus Time-Series DB**). La ingestión de datos se agrupa en bloques de dos horas, donde cada bloque es un directorio conteniendo uno o más "chunk files" (los datos), además de un fichero de metadatos y un fichero index: * Almacenamiento de datos en disco (Prometheus Time-Series DB): @@ -234,16 +252,22 @@ OpenShift Cluster Monitoring components cannot be extended since they are read o * La implementación de HA es laboriosa porque la funcionalidad de cluster requiere añadir plugins de terceros al servidor Prometheus. Es necesario tratar con "backups" y "restores", y el almacenamiento de métricas por un periodo de tiempo extendido hará que la base de datos crezca exponencialmente. Los servidores Prometheus proporcionan almacenamiento persistente, pero Prometheus no fue creado para el almacenamiento distribuido de métricas a lo largo de múltiples nodos de un cluster con replicación y capacidad curativa (como es el caso de Kubernetes). Esto es conocido como **"almacenamiento a largo-plazo" (Long-Term)** y actualmente es un requisito en unos pocos casos de uso, por ejemplo en la planificación de la capacidad para monitorizar cómo la infraestructura necesita evolucionar, contracargos para facturar diferentes equipos ó departamentos para un caso específico que han hecho de la infraestructura, análisis de tendencias de uso, o adherirse a regulaciones para verticales específicos como banca, seguros, etc. #### Storage Solutions for Prometheus +* [monitoring2.substack.com: Big Prometheus. Thanos, Cortex, M3DB and VictoriaMetrics at scale 🌟](https://monitoring2.substack.com/p/big-prometheus) * [**Prometheus TSDB**](https://prometheus.io/docs/prometheus/latest/storage/) * [**Cortex**:](https://cortexmetrics.io/) Provides horizontally scalable, highly available, multi-tenant, long term storage for Prometheus. Cortex allows for storing time series data in a key-value store like Cassandra, AWS DynamoDB, or Google BigTable. It offers a Prometheus compatible query API, and you can push metrics into a write endpoint. This makes it best suited for cloud environments and multi-tenant scenarios like service providers building hosted and managed platforms. + * [github.com/cortexproject/cortex](https://github.com/cortexproject/cortex) * [Weave Cortex SaaS (Hosted Prometheus - Public Cloud)](https://www.weave.works/features/prometheus-monitoring/) * [**Thanos**:](https://thanos.io/) Open source, **highly available Prometheus setup with long term storage capabilities**. * Thanos stores time series data in an object store like AWS S3, Google Cloud Storage, etc. Thanos pushes metrics through a side-car container from each Prometheus server through the gRPC store API to the query service in order to provide a global query view. * [github.com/ruanbekker: Thanos Cluster Setup](https://github.com/ruanbekker/thanos-cluster-setup) How to deploy a HA Prometheus setup with Unlimited Data Retention Capabilities on aws cloud S3 with Thanos Metrics. * [Highly Available Prometheus Metrics for Distributed SQL with Thanos on GKE](https://blog.yugabyte.com/highly-available-prometheus-metrics-for-distributed-sql-with-thanos-on-gke/) * [infracloud.io: Achieving multi-tenancy in monitoring with Prometheus & the mighty Thanos Receiver](https://www.infracloud.io/blogs/multi-tenancy-monitoring-thanos-receiver/) + * [particule.io: Multi-Cluster Monitoring with Thanos](https://particule.io/en/blog/thanos-monitoring) + * [prometheus-operator.dev: Thanos and the Prometheus Operator 🌟](https://prometheus-operator.dev/docs/operator/thanos/) + * [Thanos Architecture Overview 🌟](https://github.com/thanos-io/thanos#architecture-overview) * [**M3**:](https://www.m3db.io/) An open source, large-scale metrics platform developed by Uber. It has its own time series database, M3DB. Like Thanos, M3 also uses a side-car container to push the metrics to the DB. In addition, it supports metric deduplication and merging, and provides distributed query support. Although it's exciting to see attempts to address the challenges of running Prometheus at scale, these are very young projects that are not widely used yet. +* [VictoriaMetrics](https://victoriametrics.com/) ##### InfluxDB and InfluxDB Templates * [**InfluxDB**:](https://www.influxdata.com/) An [open-source time series database (TSDB)](https://en.wikipedia.org/wiki/Time_series_database) developed by InfluxData. It is written in [Go](https://en.wikipedia.org/wiki/Go_(programming_language)) and optimized for fast, high-availability storage and retrieval of [time series](https://en.wikipedia.org/wiki/Time_series) data in fields such as operations monitoring, application metrics, [Internet of Things](https://en.wikipedia.org/wiki/Internet_of_Things) sensor data, and real-time analytics. It also has support for processing data from [Graphite](https://en.wikipedia.org/wiki/Graphite_(software)). @@ -259,6 +283,7 @@ Although it's exciting to see attempts to address the challenges of running Prom #### Prometheus Exporters. Plug-in architecture and extensibility with Prometheus Exporters (collectors) * Prometheus proporciona un ecosistema de **"exporters"**, los cuales permiten que herramientas de terceros puedan exportar sus datos en Prometheus. Muchos componentes de software de código abierto son compatibles por defecto. +* [exporterhub.io 🌟](https://exporterhub.io/) Exporterhub is a curated List of Prometheus Exporters * **Un "exporter" expone las métricas de uno ó varios "collectors".** * [Prometheus Exporters](https://prometheus.io/docs/instrumenting/exporters/) * [prometheus.io/download/](https://prometheus.io/download/) @@ -298,6 +323,7 @@ Although it's exciting to see attempts to address the challenges of running Prom * [Telegraf Ansible Role](https://github.com/rossmcdonald/telegraf) * [Grafana Dashboards with Telegraf Collectors](https://grafana.com/grafana/dashboards?collector=Telegraf) * [dzone: Synthetic Monitoring With Telegraf (white-box monitoring)](https://dzone.com/articles/synthetic-monitoring-with-telegraf) Monitoring based on metrics exposed by the internals of the system +* [grafana.com: Using Telegraf plugins to visualize industrial IoT data with the Grafana Cloud Hosted Prometheus service](https://grafana.com/blog/2021/04/05/using-telegraf-plugins-to-visualize-industrial-iot-data-with-the-grafana-cloud-hosted-prometheus-service/) ##### Micrometer Collector * [**Micrometer** Collector](http://micrometer.io/) @@ -353,6 +379,9 @@ Although it's exciting to see attempts to address the challenges of running Prom ### Prometheus SaaS Solutions * [Weave Cortex SaaS (Hosted Prometheus - Public Cloud)](https://www.weave.works/features/prometheus-monitoring/) +* [logz.io](https://logz.io) + * [logz.io: Logz.io’s Prometheus-as-a-Service is Generally Available 🌟](https://logz.io/blog/prometheus-as-a-service-launch/) +* [Amazon Managed Service for Prometheus](https://aws.amazon.com/prometheus/) ## Grafana * [Grafana](https://grafana.com/) @@ -366,6 +395,8 @@ Although it's exciting to see attempts to address the challenges of running Prom * [medium: Why Grafana: Part II](https://medium.com/lightspeed-venture-partners/why-grafana-part-ii-2e7e42e0f7bb) * [scylladb.com: Building a Grafana Backend Plugin](https://www.scylladb.com/2020/10/01/building-a-grafana-backend-plugin/) * [thenewstack.io: Grafana Adds Logging to Its Enterprise Observability Stack 🌟](https://thenewstack.io/grafana-adds-logging-to-its-enterprise-observability-stack/) +* [openshift.com: Metrics-Driven Pod Constraints](https://www.openshift.com/blog/metrics-driven-pod-constraints) +* [thenewstack.io: Grafana 7.5: Controversial Pie Charts and Loki Alerts](https://thenewstack.io/grafana-7-5-controversial-pie-charts-and-loki-alerts/) ### Grafana Dashboards * [Grafana Dashboards](https://grafana.com/grafana/dashboards) @@ -388,6 +419,10 @@ Message Streams like Kafka/Red Hat AMQ Streams|Other|[9777](https://grafana.com/ - [Open source observability, meet data transformation: Grafana 7.0 promises to connect, unify, and visualize all your data](https://www.zdnet.com/article/open-source-observability-meet-data-transformation-grafana-7-0-promises-to-connect-unify-and-visualize-all-your-data/) Grafana Labs sets the bar for open source observability with Grafana 7.0: more developer friendly, more data sources, data transformation, and growth in the cloud and on premise - [Grafana 7.0: “We’ve built one of the best visualisation tools and it’s not tied to any one database”](https://jaxenter.com/grafana-7-0-interview-tom-wilkie-172261.html) +### Grafana Loki +- [Grafana Loki](https://grafana.com/oss/loki/) +- [itnext.io: Logging in Kubernetes with Loki and the PLG Stack](https://itnext.io/logging-in-kubernetes-with-loki-and-the-plg-stack-93b27c90ec34) Loki is a new log aggregation system from Grafana Labs. It is designed to be cost-effective and easy to operate. In this article, you learn more about Loki and how to use the PLG Stack (Promtail, Loki, Grafana) for logging in Kubernetes. + ## Proof of Concept: ActiveMQ Monitoring with Prometheus The aim of this Proof of Concept is to learn Prometheus by example being [Red Hat AMQ 7 (broker)](https://developers.redhat.com/products/amq/overview) on RHEL the application to be monitored. Red Hat AMQ Broker is based on ActiveMQ Artemis, being this the reason why one of the following proof of concepts is done with Artemis (the other one was run in order to learn telegraf, prometheus and grafana). The same solution tested with Artemis on RHEL is valid for Red Hat AMQ 7 Broker on RHEL. @@ -761,6 +796,7 @@ JMeter|Artemis Grafana|Artemis Dashboard * [dzone: Kibana Hacks: 5 Tips and Tricks](https://dzone.com/articles/kibana-hacks-5-tips-and-tricks) * [juanonlab.com: Dashboards de Kibana](https://www.juanonlab.com/blog/es/dashboards-de-kibana) * [skedler.com: Kibana Customization – The brilliant beginner’s guide to simplifying Kibana for non-technical users](https://www.skedler.com/blog/kibana-customization-brilliant-beginners-guide-simplifying-kibana-non-technical-users/) +* [dev.to: Beginner's guide to understanding the relevance of your search with Elasticsearch and Kibana](https://dev.to/lisahjung/beginner-s-guide-to-understanding-the-relevance-of-your-search-with-elasticsearch-and-kibana-29n6) ## Prometheus and Grafana Interactive Learning * [katacoda.com: Getting Started with Prometheus](https://www.katacoda.com/courses/prometheus/getting-started) @@ -772,6 +808,15 @@ JMeter|Artemis Grafana|Artemis Dashboard ### ElasticSearch - [zdnet.com: AWS, as predicted, is forking Elasticsearch](https://www.zdnet.com/article/aws-as-predicted-is-forking-elasticsearch/) Amazon Web Services, however, isn't the only one who dislikes Elastic's move to relicense Elasticsearch under the non-open-source Server Side Public License. - [amazon.com: Stepping up for a truly open source Elasticsearch](https://aws.amazon.com/blogs/opensource/stepping-up-for-a-truly-open-source-elasticsearch/) +- [Store NGINX access logs in Elasticsearch with Logging operator 🌟](https://banzaicloud.com/docs/one-eye/logging-operator/quickstarts/es-nginx/) This guide describes how to collect application and container logs in Kubernetes using the Logging operator, and how to send them to Elasticsearch. + - [Rancher Logging Operator 🌟](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/) +- [blog.streammonkey.com: How We Serverlessly Migrated 1.58 Billion Elasticsearch Documents](https://blog.streammonkey.com/how-we-serverlessly-migrated-1-58-billion-elasticsearch-documents-33ad3d0d7c4f) + +### OpenSearch +- [opensearch.org 🌟](https://opensearch.org/) +- [amazon.com: Introducing OpenSearch](https://aws.amazon.com/blogs/opensource/introducing-opensearch/) +- [logz.io: Logz.io Announces Support for OpenSearch; A Community-driven Open Source Fork of Elasticsearch and Kibana](https://logz.io/news-posts/logz-io-announces-support-for-opensearch-a-community-driven-open-source-fork-of-elasticsearch-and-kibana/) +- [techrepublic.com: OpenSearch: AWS rolls out its open source Elasticsearch fork](https://www.techrepublic.com/article/opensearch-aws-rolls-out-its-open-source-elasticsearch-fork/) ## Performance * [dzone.com: The Keys to Performance Tuning and Testing](https://dzone.com/articles/the-keys-to-performance-tuning-and-testing) @@ -896,7 +941,7 @@ done - [thenewstack.io: Jaeger vs. Zipkin: Battle of the Open Source Tracing Tools](https://thenewstack.io/jaeger-vs-zipkin-battle-of-the-open-source-tracing-tools/) ### Grafana Tempo distributed tracing system -- [Grafana Tempo](https://github.com/grafana/tempo) +- [Grafana Tempo](https://github.com/grafana/tempo) Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend. Tempo requires only object storage to operate and is deeply integrated with Grafana, Prometheus, and Loki. - [grafana.com: Announcing Grafana Tempo, a massively scalable distributed tracing system 🌟](https://grafana.com/blog/2020/10/27/announcing-grafana-tempo-a-massively-scalable-distributed-tracing-system/) - [opensource.com: Get started with distributed tracing using Grafana Tempo](https://opensource.com/article/21/2/tempo-distributed-tracing) Grafana Tempo is a new open source, high-volume distributed tracing backend. @@ -916,6 +961,7 @@ done * [lightstep.com](https://lightstep.com) * [skywalking.apache.org](https://skywalking.apache.org/) * [tetrate.io: SkyWalking 8.4 provides infrastucture monitoring for VMs](https://www.tetrate.io/blog/27835-revision-v1/) + * [thenewstack.io: End-User Tracing in a SkyWalking-Observed Browser](https://thenewstack.io/end-user-tracing-in-a-skywalking-observed-browser/) * [AppDynamics 🌟](https://www.appdynamics.com/) * [New Relic 🌟](https://newrelic.com/) * [Dynatrace 🌟](https://www.dynatrace.com/) @@ -945,6 +991,8 @@ done * [dynatrace.com: Monitoring of Kubernetes Infrastructure for day 2 operations](https://www.dynatrace.com/news/blog/monitoring-of-kubernetes-infrastructure-for-day-2-operations/) * [dynatrace.com: The Power of OpenShift, The Visibility of Dynatrace](https://www.dynatrace.com/news/blog/the-power-of-openshift-the-visibility-of-dynatrace/) * [dynatrace.com: Why conventional observability fails in Kubernetes environments—A real-world use case 🌟](https://www.dynatrace.com/news/blog/why-conventional-observability-fails-in-kubernetes-environments-a-real-world-use-case) +* [dynatrace.com: A look behind the scenes of AWS Lambda and our new Lambda monitoring extension](https://www.dynatrace.com/news/blog/a-look-behind-the-scenes-of-aws-lambda-and-our-new-lambda-monitoring-extension/) +* [dynatrace.com: Analyze all AWS data in minutes with Amazon CloudWatch Metric Streams available in Dynatrace](https://www.dynatrace.com/news/blog/amazon-cloudwatch-metric-streams-launch-partnership/) ## Message Queue Monitoring @@ -953,7 +1001,7 @@ Messaging Solution|Monitoring Solution|URL ActiveMQ 5.8.0+|[Dynatrace](https://www.dynatrace.com)|[ref](https://www.dynatrace.com/support/help/technology-support/application-software/other-technologies/supported-out-of-the-box/activemq/) ActiveMQ Artemis|[Micrometer Collector](https://micrometer.io/) + Prometheus|[ref1](http://activemq.apache.org/components/artemis/documentation/latest/metrics.html), [ref2](https://micrometer.io/docs/registry/prometheus) IBM MQ|[IBM MQ](https://github.com/ibm-messaging) Exporter for Prometheus|[ref](https://github.com/ibm-messaging/mq-metric-samples/tree/master/cmd/mq_prometheus) -Kakfa|[Dynatrace](https://www.dynatrace.com)|[ref1](https://www.dynatrace.com/support/help/technology-support/application-software/other-technologies/supported-out-of-the-box/kafka/), [ref2](https://www.dynatrace.com/news/blog/introducing-kafka-process-monitoring-beta/), [ref3](https://answers.dynatrace.com/spaces/482/dynatrace-open-qa/questions/232421/dynatrace-distributed-tracing-with-kafka.html) +Kafka|[Dynatrace](https://www.dynatrace.com)|[ref1](https://www.dynatrace.com/support/help/technology-support/application-software/other-technologies/supported-out-of-the-box/kafka/), [ref2](https://www.dynatrace.com/news/blog/introducing-kafka-process-monitoring-beta/), [ref3](https://answers.dynatrace.com/spaces/482/dynatrace-open-qa/questions/232421/dynatrace-distributed-tracing-with-kafka.html) Kafka|[Prometheus JMX Exporter](https://github.com/prometheus/jmx_exporter)|[ref1](https://github.com/prometheus/jmx_exporter/blob/master/example_configs/zookeeper.yaml), [ref2](https://github.com/prometheus/jmx_exporter/blob/master/example_configs/kafka-2_0_0.yml), [ref3](https://github.com/prometheus/jmx_exporter/blob/master/example_configs/kafka-connect.yml), [ref4](https://strimzi.io/blog/2019/10/14/improving-prometheus-metrics/), [ref5](https://medium.com/activewizards-machine-learning-company/kafka-monitoring-with-prometheus-telegraf-and-grafana-6228fed736f1), [ref6](https://medium.com/@nblaye/exporting-kafka-jmx-metrics-to-grafana-1b9d32fe900a), [ref7](https://blog.knoldus.com/monitoring-kafka-with-prometheus-and-grafana/) Kafka|Kafka Exporter
Use [JMX Exporter](https://github.com/prometheus/jmx_exporter) to export other Kafka's metrics|[ref](https://github.com/danielqsj/kafka_exporter) Kafka|Kafdrop – Kafka Web UI|[ref](https://github.com/obsidiandynamics/kafdrop) diff --git a/docs/nosql.md b/docs/nosql.md index c2669a00..5e2023d2 100644 --- a/docs/nosql.md +++ b/docs/nosql.md @@ -22,6 +22,8 @@ - [DZone: SQL vs. NoSQL 🌟](https://dzone.com/articles/sql-vs-nosql) Take a look at the most recent developments between SQL and NoSQL databases. And remember, make your DB decision based on the project, not on the hype. - [NoSQL Databases: a Survey and Decision Guidance](https://medium.baqend.com/nosql-databases-a-survey-and-decision-guidance-ea7823a822d) - [dev.to: NoSQL Database Design for E-Commerce Apps in 2021](https://dev.to/danielkolb/nosql-database-design-for-e-commerce-apps-in-2021-390e) +- [stackoverflow.blog: Have the tables turned on NoSQL?](https://stackoverflow.blog/2021/01/14/have-the-tables-turned-on-nosql/) NoSQL was the next big thing in system architecture in 2011, but overall interest in it has plateaued recently. What is NoSQL, what does it have to do with modern development, and is it worth implementing in your project? +- [vishnu.hashnode.dev: 4 Types Of NoSQL Databases](https://vishnu.hashnode.dev/4-types-of-nosql-databases) Evaluate which type of NoSQL database best fits your use case ### MongoDB Tools and MongoDB as a Service - [MongoDB Tools - Admin GUIs, Monitoring and Other Good Stuff](http://mongodb-tools.com/) diff --git a/docs/ocp4.md b/docs/ocp4.md index dce6a6a1..c6367d12 100644 --- a/docs/ocp4.md +++ b/docs/ocp4.md @@ -2,6 +2,7 @@ - [OpenShift Container Platform 4 (OCP 4)](#openshift-container-platform-4-ocp-4) - [Best Practices](#best-practices) - [Setting up OCP4 on AWS](#setting-up-ocp4-on-aws) + - [ROSA Red Hat OpenShift Service on AWS](#rosa-red-hat-openshift-service-on-aws) - [Downloads](#downloads) - [OpenShift End-to-End. Day 0, Day 1 & Day 2](#openshift-end-to-end-day-0-day-1--day-2) - [OCP 4 Overview](#ocp-4-overview) @@ -88,6 +89,20 @@ * [openshift.com: Nested OpenShift using OpenShift Virtualization](https://www.openshift.com/blog/nested-openshift-using-openshift-virtualization) * [developers.redhat.com: Deploying Kubernetes Operators with Operator Lifecycle Manager bundles](https://developers.redhat.com/blog/2021/02/08/deploying-kubernetes-operators-with-operator-lifecycle-manager-bundles/) * [openshift.com: 8 Answers to 7 OpenShift Questions 🌟](https://www.openshift.com/blog/8-answers-to-7-openshift-questions) +* [openshift.com: Red Hat OpenShift 4.7 Is Now Available](https://www.openshift.com/blog/red-hat-openshift-4.7-is-now-available) + * Kubernetes 1.20 + * Updated OpenShift Virtualization + * Virtualization Migrations + * Windows Containers on vSphere + * Simplified Bare Metal installs + * Horizontal Pod Autoscaler (CPU & Memory) + * New RHACM integrations + * and much, much more!! +* [zdnet.com: Red Hat opens the door for both VMs and containers in its latest OpenShift release](https://www.zdnet.com/google-amp/article/red-hat-opens-the-door-for-both-vms-and-containers-in-its-latest-openshift-release/) Red Hat's OpenShift 4.7 can help you manage your entire cloud application stack. +* [finance.yahoo.com: IBM's Red Hat OpenShift Platform to be Leveraged by Siemens](https://finance.yahoo.com/news/ibms-red-hat-openshift-platform-143702224.html) +* [openshift.com: How to Offer Service Running on OpenShift on AWS to Other AWS VPCs, Privately 🌟](https://www.openshift.com/blog/how-to-offer-service-running-on-openshift-on-aws-to-other-aws-vpcs-privately) +* [developers.redhat.com: A guide to Red Hat OpenShift 4.5 installer-provisioned infrastructure on vSphere 🌟](https://developers.redhat.com/blog/2021/03/09/a-guide-to-red-hat-openshift-4-5-installer-provisioned-infrastructure-on-vsphere/) +* [openshift.com: OpenShift Security Best Practices for Kubernetes Cluster Design 🌟](https://www.openshift.com/blog/openshift-security-best-practices-for-kubernetes-cluster-design) ### Best Practices * [developers.redhat.com - Best practices: Using health checks in the OpenShift 4.5 web console 🌟](https://developers.redhat.com/blog/2020/07/20/best-practices-using-health-checks-in-the-openshift-4-5-web-console/) 3 types of health checks offered in OpenShift 4.5 to improve application reliability and uptime @@ -100,6 +115,11 @@ * [OpenShift 4 on AWS Quick Starts 🌟](https://aws.amazon.com/blogs/opensource/openshift-4-on-aws-quick-start/) * [openshift.com: Control Regional Access to Your Service on OpenShift Running on AWS](https://www.openshift.com/blog/control-regional-access-to-your-service-on-openshift-running-on-aws) +### ROSA Red Hat OpenShift Service on AWS +* [redhat.com: Amazon and Red Hat Announce the General Availability of Red Hat OpenShift Service on AWS (ROSA)](https://www.redhat.com/en/about/press-releases/amazon-and-red-hat-announce-general-availability-red-hat-openshift-service-aws-rosa) +* [amazon.com: Red Hat OpenShift Service on AWS Now GA](https://aws.amazon.com/es/blogs/aws/red-hat-openshift-service-on-aws-now-generally-availably/) +* [infoq.com: AWS Announces the General Availability of the Red Hat OpenShift Service on AWS](https://www.infoq.com/news/2021/04/red-hat-openshift-aws/) +
[![OCP 4 Architecture](images/ocp4_arch.png)](https://www.openshift.com/blog/enterprise-kubernetes-with-openshift-part-one)
@@ -619,6 +639,7 @@ oc login - [OLM operator lifecycle manager](https://github.com/operator-framework/operator-lifecycle-manager/) - [OLM Architecture 🌟](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/doc/design/architecture.md) - [OLM Philosophy](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/doc/design/philosophy.md) + - [developers.redhat.com: OpenShift Commons Briefing: Operator Lifecycle Management (video)](https://developers.redhat.com/openshift-commons/Operator-Lifecycle-Management) - [Top Kubernetes Operators](https://blog.openshift.com/top-kubernetes-operators-advancing-across-the-operator-capability-model/) - [operatorhub.io](https://operatorhub.io/) - [learn.crunchydata.com](https://learn.crunchydata.com/) diff --git a/docs/oraclecloud.md b/docs/oraclecloud.md index 0ea4e548..f5a86a7e 100644 --- a/docs/oraclecloud.md +++ b/docs/oraclecloud.md @@ -1,5 +1,7 @@ # Oracle Cloud Infrastructure (OCI) - [Oracle Cloud Infrastructure (OCI)](https://docs.cloud.oracle.com/en-us/iaas/Content/GSG/Concepts/baremetalintro.htm) +- [github.com/oracle](https://github.com/oracle) ## Oracle Container Engine for Kubernetes (OKE) -- [Oracle Container Engine for Kubernetes (OKE)](https://docs.cloud.oracle.com/en-us/iaas/Content/ContEng/Concepts/contengoverview.htm) \ No newline at end of file +- [Oracle Container Engine for Kubernetes (OKE)](https://docs.cloud.oracle.com/en-us/iaas/Content/ContEng/Concepts/contengoverview.htm) +- [blogs.oracle.com: Announcing private Kubernetes clusters](https://blogs.oracle.com/cloud-infrastructure/announcing-private-kubernetes-clusters) \ No newline at end of file diff --git a/docs/other-awesome-lists.md b/docs/other-awesome-lists.md index 766c874e..91d476eb 100644 --- a/docs/other-awesome-lists.md +++ b/docs/other-awesome-lists.md @@ -23,6 +23,7 @@ - [Big Data](#big-data) - [Open Source Alternatives](#open-source-alternatives) - [Kubectl Plugins](#kubectl-plugins) +- [Base64](#base64) ## Inspired By - [@sindresorhus' Awesome](https://github.com/sindresorhus/awesome) @@ -34,8 +35,11 @@ - [@jk8s' Awesome Kubernetes](https://github.com/jk8s/awesome-kubernetes) - [Awesome kubetools](http://dockerlabs.collabnix.com/kubernetes/kubetools/) Curated List of Kubernetes Tools - [kubezilla.com: Kubetools – Curated List of Kubernetes Tools](https://kubezilla.com/tools/) +- [Awesome Kubernetes (K8s) Security 🌟](https://github.com/magnologan/awesome-k8s-security) ## Other Awesome Lists +- [free-for.dev 🌟](https://free-for.dev) This is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings that have free tiers for developers. +- [Awesome WSL](https://awesomeopensource.com/project/sirredbeard/Awesome-WSL) ### Project Management - [Awesome Project Management](https://github.com/shahedbd/awesome-project-management) - [Awesome Agile](https://github.com/lorabv/awesome-agile) @@ -114,6 +118,18 @@ - [Awesome Angular](https://github.com/PatrickJS/awesome-angular) - [Awesome Go](https://github.com/avelino/awesome-go) - [awesome-go.com](https://awesome-go.com/) +- [github.com/charlax/professional-programming: A collection of full-stack resources for programmers 🌟](https://github.com/charlax/professional-programming) Free resources⚡ + - Books + - Articles + - Design patterns + - Algo and DS + - Databases + - JavaScript + - Interview questions + - Security + - Debugging + - Data Science + - etc... #### Bash - [wiki.bash-hackers.org](https://wiki.bash-hackers.org/) @@ -133,3 +149,6 @@ ## Kubectl Plugins - [Available kubectl plugins](https://github.com/kubernetes-sigs/krew-index/blob/master/plugins.md) - [Awesome Kubectl plugins](https://github.com/ishantanu/awesome-kubectl-plugins) + +## Base64 +- [base64encode.org](https://www.base64encode.org/) Base64 Decode and Encode diff --git a/docs/performance-testing-with-jenkins-and-jmeter.md b/docs/performance-testing-with-jenkins-and-jmeter.md index 3226d1fb..eb862899 100644 --- a/docs/performance-testing-with-jenkins-and-jmeter.md +++ b/docs/performance-testing-with-jenkins-and-jmeter.md @@ -29,6 +29,7 @@ * [tutorialspoint.com: JMeter Quick Guide](https://www.tutorialspoint.com/jmeter/pdf/jmeter_quick_guide.pdf) * [JMeter Distributed Testing Step-by-step](https://venkatmatta.files.wordpress.com/2016/03/jmeter_distributed_testing_step_by_step.pdf) * [testinglpoint.com: Timer in JMeter](https://www.testinglpoint.com/timer/) Timer in JMeter is easy but crucial part of JMeter where we have to manage the thread user count and time to apply the load to the application. +* [youtube: JMeter API Performance Testing Tutorial 🌟](https://www.youtube.com/watch?v=8r5LYzUIepo) ## JMeter based Cloud solutions * [octoperf.com](https://octoperf.com/) diff --git a/docs/project-management-methodology.md b/docs/project-management-methodology.md index c20ad466..6ff6cbdb 100644 --- a/docs/project-management-methodology.md +++ b/docs/project-management-methodology.md @@ -29,9 +29,11 @@ - [scrum.org: Scrum 2021: Getting You Started as Scrum Master or Product Owner](https://www.scrum.org/resources/blog/scrum-2021-getting-you-started-scrum-master-or-product-owner) - [scrum.org: Kanban Guide for Scrum Teams](https://www.scrum.org/resources/kanban-guide-scrum-teams) The Kanban Guide for Scrum Teams helps you add professional flow concepts to improve your value delivery. - [redhat.com: 11 considerations for effectively managing a Linux sysadmin team 🌟](https://www.redhat.com/sysadmin/11-manager-considerations) Here are some guidelines for managers when dealing with your system administrator staff members. +- [medium: Scrum Teams That Don’t Verify Their Outcomes Are Basically Waterfall Teams](https://medium.com/serious-scrum/scrum-teams-that-dont-verify-their-outcomes-are-basically-waterfall-teams-cb208acdcc61) ### Team Topologies - [The Problem With Org Charts](https://itrevolution.com/the-problem-with-org-charts/) +- [dzone: Breaking Silos: Enhance Speed and Value Delivery](https://dzone.com/articles/silos-breaking-for-business-to-enhance-speed-to-va) How do we diagnose organizational silos? And how do we slice the large size business teams who are serving many customers or products with poor efficiency? ### Agile vs Scrum vs Waterfall vs Kanban vs Lean - [visual-paradigm.com: Scrum vs Waterfall vs Agile vs Lean vs Kanban](https://www.visual-paradigm.com/scrum/scrum-vs-waterfall-vs-agile-vs-lean-vs-kanban/) diff --git a/docs/project-management-tools.md b/docs/project-management-tools.md index 76ea9841..262a75d6 100644 --- a/docs/project-management-tools.md +++ b/docs/project-management-tools.md @@ -19,3 +19,11 @@ Jira and Bitbucket integration. Now you can transition issues right from your me - [neilpatel.com: Best Free Project Management Software](https://neilpatel.com/blog/best-free-project-management-software/) - [Swim](https://swimm.io/) Sync Teams with Code. - [thenewstack.io: Swimm Helps New Dev Hires Stay Afloat with Continuous Documentation](https://thenewstack.io/swimm-helps-new-dev-hires-stay-afloat-with-continuous-documentation/) +- [techrepublic.com: Kanboard: A simple to deploy, easy to use Kanban board for project management](https://www.techrepublic.com/article/kanboard-a-simple-to-deploy-easy-to-use-kanban-board-for-project-management/) + +
+ + + +
+ diff --git a/docs/pulumi.md b/docs/pulumi.md index b2b471dc..648a790f 100644 --- a/docs/pulumi.md +++ b/docs/pulumi.md @@ -5,4 +5,7 @@ - [DRY (Don’t Repeat Yourself) on the cloud with Pulumi](https://blog.thundra.io/dry-dont-repeat-yourself-on-the-cloud-with-pulumi) - [civo.com: Manage Kubernetes clusters using the Civo Pulumi provider](https://www.civo.com/learn/kubernetes-clusters-using-the-civo-pulumi-provider) - [build5nines.com: Beginner’s Guide to Pulumi CI/CD Pipelines](https://build5nines.com/beginners-guide-to-pulumi-ci-cd-pipelines/) -- [pulumi.com: From Terraform to Infrastructure as Software](https://www.pulumi.com/blog/from-terraform-to-infrastructure-as-software/) \ No newline at end of file +- [pulumi.com: From Terraform to Infrastructure as Software](https://www.pulumi.com/blog/from-terraform-to-infrastructure-as-software/) +- [pulumi.com: Observability with Infrastructure as Code](https://www.pulumi.com/blog/observability-with-infrastructure-as-code/) +- [octopus.com: Create an AKS Cluster with Pulumi and Octopus Deploy](https://octopus.com/blog/pulumi-and-aks-with-octopus-deploy) +- [build5nines.com: Beginner’s Guide to Pulumi CI/CD Pipelines](https://build5nines.com/beginners-guide-to-pulumi-ci-cd-pipelines/) \ No newline at end of file diff --git a/docs/python.md b/docs/python.md index fb272370..985d950b 100644 --- a/docs/python.md +++ b/docs/python.md @@ -8,8 +8,10 @@ - [Python pip and pip's wheel](#python-pip-and-pips-wheel) - [Python Feature Flags](#python-feature-flags) - [Python testing](#python-testing) -- [Data Science. Python Pandas and pivot tables](#data-science-python-pandas-and-pivot-tables) +- [Data Science.](#data-science) + - [Python Pandas and pivot tables](#python-pandas-and-pivot-tables) - [PandasDatabase](#pandasdatabase) + - [NumPy](#numpy) - [Python standard library Modules and Code](#python-standard-library-modules-and-code) - [Python and AWS](#python-and-aws) - [Python Tools](#python-tools) @@ -97,6 +99,18 @@ - [src-r-r.github.io: How To Property Set Up Python Logging With A Command Line Program](https://src-r-r.github.io/articles/how_to_log_with_a_python_cli_program/) - [realpython.com: Python Microservices With gRPC 🌟](https://realpython.com/python-microservices-grpc/) - [dashbird.io: How I Manage Credentials in Python Using AWS Secrets Manager](https://dashbird.io/blog/aws-secrets-manager-python/) +- [freecodecamp.org: The Python Handbook 🌟](https://www.freecodecamp.org/news/the-python-handbook/) +- [towardsdatascience.com: 7 Must-Know Data Wrangling Operations with Python Pandas](https://towardsdatascience.com/7-must-know-data-wrangling-operations-with-python-pandas-849438a90d15) +- [towardsdatascience.com: All The Important Features and Changes in Python 3.10](https://towardsdatascience.com/all-the-important-features-and-changes-in-python-3-10-e3d1fe542fbf) +- [towardsdatascience.com: Data Preprocessing in Python Pandas — Part 6 Dropping Duplicates](https://towardsdatascience.com/data-preprocessing-in-python-pandas-part-6-dropping-duplicates-e35e46bcc9d6) A quick tutorial to drop duplicates using the Python Pandas library. +- [antonz.org: How to make an awesome Python package in 2021](https://antonz.org/python-packaging/) +- [freecodecamp.org: Python Map Function – How to Map a List in Python 3.0, With Example Code](https://www.freecodecamp.org/news/python-map-function-how-to-map-a-list-in-python-3-0-with-example-code/) +- [betterprogramming.pub: 3 Seemingly Simple Python Features That Confuse Beginners](https://betterprogramming.pub/3-seemingly-simple-python-features-that-confuse-beginners-313575312dcf) +- [analyticsindiamag.com: Object-Oriented Programming with Python](https://analyticsindiamag.com/object-oriented-programming-python/) +- [towardsdatascience.com: Python loops: Some beginner-friendly looping challenges](https://towardsdatascience.com/python-loops-some-beginner-friendly-looping-challenge-e112fa606493) Looping through lists, tuples, dictionaries and strings. +- [lambdatest.com: Python Tutorial 🌟](https://www.lambdatest.com/learning-hub/python-tutorial) +- [analyticsvidhya.com: Top Online Platforms to Learn Python](https://www.analyticsvidhya.com/blog/2021/04/top-online-platforms-to-learn-python/) +- [towardsdatascience.com: Master Label Processing In Python](https://towardsdatascience.com/essential-python-string-processing-techniques-aa5be43a4f1f) The full tutorial on working with string-type data in Python.
@@ -168,7 +182,9 @@ - [gabbi - Declarative HTTP testing library pypi](http://pypi.python.org/pypi/gabbi/) - [tracker: A time machine for debugging pesky stateful errors](https://github.com/madisonmay/tracker) -## Data Science. Python Pandas and pivot tables +## Data Science. + +### Python Pandas and pivot tables - [oreilly.com: how to use pivot tables in Pandas step-by-step](https://www.oreilly.com/learning/pivot-tables) - [pbpython.com: Practical Business Python](http://pbpython.com/) - [pbpython.com: Pandas Pivot Table Explained](http://pbpython.com/pandas-pivot-table-explained.html) @@ -182,6 +198,9 @@ ### PandasDatabase - [PandasDatabase is a RESTful database engine application built on top of Pandas](https://pypi.python.org/pypi/pddb/) +### NumPy +- [towardsdatascience.com: NumPy Basics Cheat Sheet (2021), Python for Data Science](https://towardsdatascience.com/numpy-basics-cheat-sheet-2021-python-for-data-science-89c483773880) The absolute basics for beginners learning NumPy in 2021 + ## Python standard library Modules and Code - [Python 3 standard library Module of the Week, Doug Hellmann](https://pymotw.com) - [Python 2 standard library Module of the Week, Doug Hellmann](https://pymotw.com/2) diff --git a/docs/qa.md b/docs/qa.md index 92a82125..bd6d2b39 100644 --- a/docs/qa.md +++ b/docs/qa.md @@ -3,6 +3,7 @@ * [Awesome Software Quality](https://github.com/ligurio/awesome-software-quality) * [softwaretestguideforu.com: What is system testing? How to perform system testing?](https://www.softwaretestguideforu.com/2020/06/what-is-system-testinghow-to-perform.html) * [linkedin.com/pulse: Importance of API Automation Testing 🌟](https://www.linkedin.com/pulse/importance-api-automation-testing-manish-saini/) +* [automationreinvented.blogspot.com: Top 40 API Automation testing interview question for SDET and Automation QA ?](https://automationreinvented.blogspot.com/2021/03/top-40-api-testing-interview-question.html) ## Tools * [collabnix.com: The Ultimate Docker Tutorial for Automation Testing](https://collabnix.com/the-ultimate-docker-tutorial-for-automation-testing/) @@ -19,4 +20,8 @@ ## Kubernetes conformance testing tools - Mastercard, for example, checks every deployment with Kubernetes conformance testing tools such as sonobuoy and kubench. - [sonobuoy](https://github.com/vmware-tanzu/sonobuoy) is a diagnostic tool that makes it easier to understand the state of a Kubernetes cluster by running a set of plugins (including Kubernetes conformance tests) in an accessible and non-destructive manner. It is a customizable, extendable, and cluster-agnostic way to generate clear, informative reports about your cluster. -- [kubench](https://github.com/vincentserpoul/kubench) Benchmark different containerized applications within a kubernetes cluster. \ No newline at end of file +- [kubench](https://github.com/vincentserpoul/kubench) Benchmark different containerized applications within a kubernetes cluster. + +
+ +
\ No newline at end of file diff --git a/docs/rancher.md b/docs/rancher.md index 375425c3..c8591274 100644 --- a/docs/rancher.md +++ b/docs/rancher.md @@ -33,6 +33,7 @@ * [rancher.com: Rancher 2.5 Delivers On "Computing Everywhere" Strategy](https://rancher.com/blog/2020/rancher-2-5-delivers-computing-everwhere-strategy) * [vitobotta.com: Kubernetes in DigitalOcean with Rancher](https://vitobotta.com/2020/11/02/kubernetes-digitalocean-rancher/?utm_sq=gkuh2clx8u) * [rancher: Speed Up Development with Automated Kubernetes Deployments](https://rancher.com/blog/2020/speed-development-automated-kubernetes-deployments) +* [thenewstack.io: Rancher 2.5 Sets out to Be the Stock Kubernetes Build for GitOps](https://thenewstack.io/rancher-2-5-sets-out-to-be-the-stock-kubernetes-build-for-gitops/)
[![rancher architecture](images/rancher.png)](https://www.youtube.com/watch?v=2LNxGVS81mE) @@ -83,6 +84,7 @@ ### K3D - [**k3d**](https://github.com/rancher/k3d) k3s that runs in docker containers. +- [cncf.io: Introduction to k3d: Run K3s in Docker](https://www.cncf.io/blog/2021/03/16/introduction-to-k3d-run-k3s-in-docker/) ### K3OS - [**k3OS**](https://github.com/rancher/k3os) k3OS is a Linux distribution designed to remove as much OS maintenance as possible in a Kubernetes cluster. It is specifically designed to only have what is needed to run k3s. Additionally the OS is designed to be managed by kubectl once a cluster is bootstrapped. Nodes only need to join a cluster and then all aspects of the OS can be managed from Kubernetes. Both k3OS and k3s upgrades are handled by the k3OS operator. @@ -116,6 +118,7 @@ * [rancher.com/blog: Getting Started with Longhorn Distributed Block Storage and Cloud-Native Distributed SQL](https://rancher.com/blog/2020/yugabyte?utm_content=126950057) ## Rancher Fleet to manage multiple kubernetes clusters +* [github.com/rancher/fleet](https://github.com/rancher/fleet) Fleet is GitOps at scale. Fleet can manage deployments from git of raw Kubernetes YAML, Helm charts, or Kustomize or any combination of the three. * [**Fleet** Management for kubernetes](https://rancher.com/blog/2020/fleet-management-kubernetes/) a new open source project from the team at Rancher focused on managing fleets of Kubernetes clusters. * [itnext.io: Fleet Management of Kubernetes Clusters at Scale — Rancher’s Fleet](https://itnext.io/fleet-management-of-kubernetes-clusters-at-scale-ranchers-fleet-de161cc52325) diff --git a/docs/recruitment.md b/docs/recruitment.md index 54090c24..96eb0572 100644 --- a/docs/recruitment.md +++ b/docs/recruitment.md @@ -1,4 +1,5 @@ # Recruitment +- [protocol.com: Developer experience is the next major competitive front in enterprise tech](https://www.protocol.com/caavo-remote-senior-living-facilities) Now that cloud is old news and APIs launch major businesses, the most successful companies over the next decade of enterprise tech will delight their customers. ## Recruitment Portals in Spain - [trycircular.com (Spain)](https://trycircular.com) The hiring community for tech recruiters and developers with good Candidate Experience guaranteed. \ No newline at end of file diff --git a/docs/scaffolding.md b/docs/scaffolding.md index ea56323c..86d1b3ca 100644 --- a/docs/scaffolding.md +++ b/docs/scaffolding.md @@ -4,7 +4,7 @@ - [Java Scaffolding](#java-scaffolding) - [Java Scaffolding with Spring Roo](#java-scaffolding-with-spring-roo) - [Java Scaffolding with Maven](#java-scaffolding-with-maven) -- [Kubernetes Scaffolding](#kubernetes-scaffolding) +- [Kubernetes Scaffolding. Built in snippets for creating k8s resources](#kubernetes-scaffolding-built-in-snippets-for-creating-k8s-resources) - [Other Scaffolding Tools](#other-scaffolding-tools) ## Scaffold Definition @@ -25,7 +25,7 @@ - You can create a project by executing the generation goal on the archetype plugin via the following command: ```mvn archetype:generate```. - [Maven](maven-gradle.md) -## Kubernetes Scaffolding +## Kubernetes Scaffolding. Built in snippets for creating k8s resources - [Ambassador Edge Stack. K8S Initializer (scaffolding tool) 🌟](https://app.getambassador.io/) Build Your Own Application-Ready Kubernetes Playground. Generate YAML configs for ingress, CI/CD, observability, authentication, and more in just 3 minutes. - [Skaffold 🌟](https://skaffold.dev/) - [cloud.google.com: Kubernetes development, simplified—Skaffold is now GA](https://cloud.google.com/blog/products/application-development/kubernetes-development-simplified-skaffold-is-now-ga) @@ -33,6 +33,7 @@ - [Draft](https://draft.sh/) - [Garden](https://garden.io/) - [codefresh.io: The ultimate guide for local development on Kubernetes: Draft vs Skaffold vs Garden.io](https://codefresh.io/howtos/local-k8s-draft-skaffold-garden/) +- [cloud.google.com: configuring_with_snippets 🌟](https://cloud.google.com/code/docs/vscode/yaml-editing#configuring_with_snippets) GoogleCloudTech Code has built-in snippets for creating common resources (pod, service, configmap, etc). Plus diffing and dry-run of YAML. ## Other Scaffolding Tools - [Atomist](https://go.atomist.com/) New automation platform, delivering pre-built automations called Skills. \ No newline at end of file diff --git a/docs/securityascode.md b/docs/securityascode.md index 6261a447..f13d2bf0 100644 --- a/docs/securityascode.md +++ b/docs/securityascode.md @@ -5,9 +5,11 @@ - [Open Policy Agent in OpenShift](#open-policy-agent-in-openshift) - [Open Policy Agent in Cloudflare Workers](#open-policy-agent-in-cloudflare-workers) - [Policy as Code in Terraform Cloud](#policy-as-code-in-terraform-cloud) +- [Cloud Custodian](#cloud-custodian) ## SSL certificates with Let's Encrypt in Kubernetes Ingress via cert-manager - [medium: Using SSL certificates from Let’s Encrypt in your Kubernetes Ingress via cert-manager](https://medium.com/flant-com/cert-manager-lets-encrypt-ssl-certs-for-kubernetes-7642e463bbce) +- [rejupillai.com: Let’s Encrypt the Web (for free)](https://www.rejupillai.com/index.php/2021/03/06/configure-tls-on-gke-ingress-for-free-with-lets-encrypt/) ## Security Policy as Code - [OPA Open Policy Agent 🌟](https://www.openpolicyagent.org/) @@ -17,6 +19,11 @@ - [fugue.co: 5 tips for using the Rego language for Open Policy Agent (OPA)](https://www.fugue.co/blog/5-tips-for-using-the-rego-language-for-open-policy-agent-opa) - [PolicyHub CLI, a CLI tool that makes Rego policies searchable 🌟](https://github.com/policy-hub/policy-hub-cli) a list of community OPA policies - [blog.styra.com: Integrating Identity: OAUTH2 and OPENID CONNECT in Open Policy Agent](https://blog.styra.com/blog/integrating-identity-oauth2-and-openid-connect-in-open-policy-agent) +- [blog.styra.com: Rego Unit Testing](https://blog.styra.com/blog/rego-unit-testing) +- [github.com/instrumenta/policies: A set of shared policies for use with Conftest and other Open Policy Agent tools](https://github.com/instrumenta/policies) +- [itprotoday.com: Who Needs Open Policy Agent?](https://www.itprotoday.com/devops-and-software-development/who-needs-open-policy-agent) Open Policy Agent makes it possible to create a single set of configuration rules and deploy them automatically across a large-scale environment. +- [blog.styra.com: Dynamic Policy Composition for OPA](https://blog.styra.com/blog/dynamic-policy-composition-for-opa) +- [blog.styra.com: 5 OPA Deployment Performance Models for Microservices](https://blog.styra.com/blog/5-opa-deployment-performance-models-for-microservices) ## Open Policy Agent in Kubernetes - [infracloud.io: Kubernetes Pod Security Policies with Open Policy Agent](https://www.infracloud.io/kubernetes-pod-security-policies-opa/) @@ -26,6 +33,8 @@ - [kubermatic.com: Using Open Policy Agent With Kubermatic Kubernetes Platform](https://www.kubermatic.com/blog/using-open-policy-agent-with-kubermatic/) - [k8s-security-policies](https://github.com/raspbernetes/k8s-security-policies) This repository provides a security policies library that is used for securing Kubernetes clusters configurations. The security policies are created based on CIS Kubernetes benchmark and rules defined in Kubesec.io. The policies are written in Rego, a high-level declarative language, its purpose-built for expressing policies over complex hierarchical data structures. For detailed information on Rego see the Policy Language documentation. - [medium: Deploying Open Policy Agent (OPA) on a GKE cluster — Step by Step](https://medium.com/linkbynet/deploying-opa-on-a-gke-cluster-da4d3d77812c) +- [github.com/instrumenta/policies: A set of shared policies for use with Conftest and other Open Policy Agent tools 🌟](https://github.com/instrumenta/policies) +- [blog.styra.com: Using OPA with GitOps to speed Cloud-Native development](https://blog.styra.com/blog/using-opa-with-gitops-to-speed-cloud-native-development) ## Open Policy Agent in OpenShift - [blog.openshift.com: Fine-Grained Policy Enforcement in OpenShift with Open Policy Agent 🌟](https://blog.openshift.com/fine-grained-policy-enforcement-in-openshift-with-open-policy-agent/) @@ -34,4 +43,7 @@ * [compile OpenPolicyAgent policies into WebAssembly and run them on the edge](https://github.com/open-policy-agent/contrib/tree/master/wasm/cloudflare-worker) ## Policy as Code in Terraform Cloud -- [hashicorp.com: Securing Infrastructure In Application Pipelines](https://www.hashicorp.com/resources/securing-infrastructure-in-application-pipelines/) Learn how to use policy as code in Terraform Cloud to securely deliver applications. \ No newline at end of file +- [hashicorp.com: Securing Infrastructure In Application Pipelines](https://www.hashicorp.com/resources/securing-infrastructure-in-application-pipelines/) Learn how to use policy as code in Terraform Cloud to securely deliver applications. + +## Cloud Custodian +- [Cloud Custodian](https://github.com/cloud-custodian/cloud-custodian) is a rules engine for managing public cloud accounts and resources. It allows users to define policies to enable a well managed cloud infrastructure, that's both secure and cost optimized. \ No newline at end of file diff --git a/docs/selenium-appium-zephyr.md b/docs/selenium-appium-zephyr.md index 8252bbc8..0479dcf0 100644 --- a/docs/selenium-appium-zephyr.md +++ b/docs/selenium-appium-zephyr.md @@ -1,6 +1,7 @@ # Test Automation Frameworks and Behavior Driven Development. Selenium, Cucumber, Appium & Zephyr Jira Plugin - [Introduction](#introduction) - [Selenium](#selenium) +- [Cypress](#cypress) - [Mobile Tests](#mobile-tests) - [Appium](#appium) - [Cucumber and Appium. Behavior Driven Development](#cucumber-and-appium-behavior-driven-development) @@ -27,6 +28,10 @@ - [intellipaat.com: Selenium Tutorial – Learn Selenium from Experts](https://intellipaat.com/blog/tutorial/selenium-tutorial/) - [lambdatest.com: How To Integrate Jenkins & Maven With Selenium?](https://www.lambdatest.com/blog/selenium-maven-jenkins-integration/) - [lambdatest.com: Selenium 4 🌟](https://www.lambdatest.com/learning-hub/selenium-4) +- [automationreinvented.blogspot.com: How to run selenium tests from Jenkins? Maven and Jenkins Integration with Testng-Selenium?Run selenium maven project from command line?](https://automationreinvented.blogspot.com/2021/02/how-to-run-test-selenium-tests-from.html) + +## Cypress +- [lambdatest.com: Selenium vs Cypress – Which Is Better in 2021?](https://www.lambdatest.com/blog/cypress-vs-selenium-comparison/) ## Mobile Tests ### Appium diff --git a/docs/serverless.md b/docs/serverless.md index 0184ba8a..02ba49f9 100644 --- a/docs/serverless.md +++ b/docs/serverless.md @@ -1,5 +1,6 @@ # Serverless Architectures and Frameworks - [Serverless Architectures](#serverless-architectures) + - [Microservices vs. Serverless](#microservices-vs-serverless) - [Case Studies](#case-studies) - [FaaS: Function as a Service](#faas-function-as-a-service) - [Serverless Ecosystems Comparison](#serverless-ecosystems-comparison) @@ -25,9 +26,17 @@ * [serverless.com: Why we switched from docker to serverless](https://www.serverless.com/blog/why-we-switched-from-docker-to-serverless) * [dzone: The Serverless Path to DevOps](https://dzone.com/articles/the-serverless-path-to-devops) Serverless and DevOps combine in this article the uses AWS services as examples of how serverless technologies benefit DevOps processes. * [developers.redhat.com: Orchestrate event-driven, distributed services with Serverless Workflow and Kubernetes](https://developers.redhat.com/blog/2020/11/26/event-driven-distributed-service-orchestration-with-serverless-workflow/) +* [dzone: The State of Serverless Computing 2021](https://dzone.com/articles/the-state-of-serverless-computing-2021) +* [dzone: Implementing Serverless Microservices Architecture on AWS](https://dzone.com/articles/implementing-serverless-microservices-architecture) In this article, we will explain how enterprises can implement serverless microservices architectures using AWS Cloud. +* [docs.google.com: Serverless Guide to Success 2021](https://docs.google.com/document/u/0/d/1VEkUvTbqxfC1XyVGb2Z3DtEk9NA1M6PJpeCqEYRATLM/mobilebasic) +* [vimal-dwarampudi.medium.com: Serverless Architecture design on major clouds](https://vimal-dwarampudi.medium.com/serverless-architecture-design-on-major-clouds-8c53c2aa62d2) + +### Microservices vs. Serverless +* [fathomtech.io: Microservices vs. Serverless](https://fathomtech.io/blog/microservices-vs-serverless/) ### Case Studies * [dashbird.io: Serverless Case Study – Coca-Cola](https://dashbird.io/blog/serverless-case-study-coca-cola/) +* [thenewstack.io: How Daily.Dev Built a Low-Budget Serverless Scraping Pipeline for Online Articles](https://thenewstack.io/how-daily-dev-built-a-low-budget-serverless-scraping-pipeline-for-online-articles/) ### FaaS: Function as a Service * [wikipedia: FaaS Function as a Service](https://en.wikipedia.org/wiki/Function_as_a_service) @@ -38,6 +47,7 @@ * [fauna.com: How does FaaS compare to PaaS and CaaS. A Comparison of Serverless Function (FaaS) Providers](https://fauna.com/blog/comparison-faas-providers) * [techbeacon.com: An essential guide to the 2019 serverless ecosystem](https://techbeacon.com/enterprise-it/essential-guide-2019-serverless-ecosystem) The Serverless Framework, the most popular option, offers integrations with all major platform providers. Others to consider include (in alphabetical order): Architect (Node, AWS), Chalice (Python, AWS), Claudia.js (Node, AWS), Dawson (Node, AWS), DEEP (Node, AWS), Flogo (Go, AWS), Lambada Framework (Java, AWS), Python-Lambda (Python, AWS), Pulumi (Node/Python/Go, AWS/Azure/GCP/Kubernetes), Shep (Node, AWS), Sparta (Go, AWS), Spring Cloud Function (Java, AWS/Azure/OpenWhisk), and Zappa (Python, AWS). * [vshn.ch: A (Very!) Quick Comparison of Kubernetes Serverless Frameworks](https://www.vshn.ch/en/blog/a-very-quick-comparison-of-kubernetes-serverless-frameworks/) +* [dev.to: Price Comparison of Popular Serverless Architecture Providers](https://dev.to/mbagley1020/price-comparison-of-popular-serverless-architecture-providers-2jk9) ## Serverless Framework (the most popular serverless ecosystem) * [serverless.com: Serverless Framework](https://www.serverless.com/) diff --git a/docs/servicemesh.md b/docs/servicemesh.md index 76569eec..10dc4576 100644 --- a/docs/servicemesh.md +++ b/docs/servicemesh.md @@ -38,6 +38,11 @@ * Service Mesh is an emerging architecture pattern gaining traction today. Along with Kubernetes, Service Mesh can form a powerful platform which addresses the technical requirements that arise in a highly distributed environment typically found on a microservices cluster and/or service infrastructure. A Service Mesh is a dedicated infrastructure layer for facilitating service-to-service communications between microservices. * Service Mesh addresses the communication requirements typical in a microservices-based application, including encrypted tunnels, health checks, circuit breakers, load balancing and traffic permission. Leaving the microservices to address these requirements leads to an expensive and time consuming development process. * Kong provides an enterprise-class and comprehensive service connectivity platform that includes an API gateway, a Kubernetes ingress controller and a Service Mesh implementation. The platform allows customers to deploy on multiple environments such as on premises, hybrid, multi-­­­­­­region and multi-cloud. +* [cloudops.com: Comparing Service Meshes: Istio, Linkerd, Consul Connect, and Citrix ADC](https://www.cloudops.com/blog/comparing-service-meshes-istio-linkerd-and-consul-connect-citrix-adc/) +* [platform9.com: Kubernetes Service Mesh: A Comparison of Istio, Linkerd and Consul](https://platform9.com/blog/kubernetes-service-mesh-a-comparison-of-istio-linkerd-and-consul/) +* [opensource.com: Why you should care about service mesh](https://opensource.com/article/21/3/service-mesh) Service mesh provides benefits for development and operations in microservices environments. +* [containerjournal.com: When Is Service Mesh Worth It?](https://containerjournal.com/features/when-is-service-mesh-worth-it/) +* [thenewstack.io: Service Meshes in the Cloud Native World](https://thenewstack.io/service-meshes-in-the-cloud-native-world/) ## Service Mesh and API Gateways * [medium: The Roles of Service Mesh and API Gateways in Microservice Architecture 🌟](https://medium.com/better-programming/the-roles-of-service-mesh-and-api-gateways-in-microservice-architecture-f6e7dfd61043) @@ -54,6 +59,9 @@ - [hashicorp.com: HashiCorp Consul Ingress Gateways and L7 Traffic Management in Kubernetes 🌟](https://www.hashicorp.com/blog/hashicorp-consul-ingress-gateways-and-l7-traffic-management-in-kubernetes) - [learn.hashicorp.com: Consul Service Mesh on Kubernetes Design Patterns](https://learn.hashicorp.com/tutorials/consul/kubernetes-consul-design-patterns) - [hashicorp.com: Disaster Recovery for HashiCorp Consul on Kubernetes 🌟](https://www.hashicorp.com/blog/disaster-recovery-for-hashicorp-consul-on-kubernetes) See the recovery steps to protect your data and secrets during an extended outage using Kubernetes and HashiCorp Consul. +- [medium: A Practical Guide to HashiCorp Consul — Part 1 🌟](https://medium.com/velotio-perspectives/a-practical-guide-to-hashicorp-consul-part-1-5ee778a7fcf4) + - [medium: A Practical Guide to HashiCorp Consul — Part 2 🌟](https://medium.com/velotio-perspectives/a-practical-guide-to-hashicorp-consul-part-2-3c0ebc0351e8) +- [Fabio Load Balancer 🌟](https://fabiolb.net/) fabio is a fast, modern, zero-conf load balancing HTTP(S) and TCP router for deploying applications managed by consul. Register your services in consul, provide a health check and fabio will start routing traffic to them. No configuration required. Deployment, upgrading and refactoring has never been easier. ### Consul Connect - [consul Connect](https://www.consul.io/docs/connect/index.html) @@ -61,6 +69,10 @@ ## Linkerd Service Mesh - [Linkerd](https://linkerd.io/) - [Announcing Linkerd 2.8: simple, secure multi-cluster Kubernetes](https://linkerd.io/2020/06/09/announcing-linkerd-2.8/) +- [cncf.io: Kubernetes network policies with Cilium and Linkerd](https://www.cncf.io/blog/2021/02/25/kubernetes-network-policies-with-cilium-and-linkerd/) +- [cncf.io: Protocol detection and opaque ports in Linkerd](https://www.cncf.io/blog/2021/03/10/protocol-detection-and-opaque-ports-in-linkerd/) +- [thenewstack.io: Linkerd 2.0: The Service Mesh for Service Owners, Platform Architects, SREs](https://thenewstack.io/linkerd-2-0-the-service-mesh-for-service-owners-platform-architects-sres/) +- [cncf.io: Why Linkerd doesn’t use Envoy](https://www.cncf.io/blog/2020/12/11/why-linkerd-doesnt-use-envoy/) "[Installed @Linkerd in staging yesterday using Helm and Terraform](https://twitter.com/DanielJamesPost). It was incredibly easy to setup and immediately helped me diagnose tricky latency issues between services. I have no idea why I didn’t do this sooner. Can’t wait to get this into production." @@ -81,6 +93,7 @@ - [Envoy](https://www.envoyproxy.io/) - [Examining Load Balancing Algorithms with Envoy](https://blog.envoyproxy.io/examining-load-balancing-algorithms-with-envoy-1be643ea121c) - [solo.io: Why the control plane matters. Control planes are different than data planes. Separating the control plane from data plane 🌟](https://www.solo.io/blog/why-the-control-plane-matters/) +- [ekglue - Envoy/Kubernetes glue](https://github.com/jrockway/ekglue) Glue the Kubernetes API to Envoy's xDS APIs ### xDS protocol (Envoy's Discovery Service Protocol) - [xDS REST and gRPC protocol](https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol) diff --git a/docs/sonarqube.md b/docs/sonarqube.md index b01481c4..68e1b1a4 100644 --- a/docs/sonarqube.md +++ b/docs/sonarqube.md @@ -3,13 +3,14 @@ - [Analyzing Code with SonarQube](#analyzing-code-with-sonarqube) - [Integrations](#integrations) - [SonarQube on Kubernetes](#sonarqube-on-kubernetes) - - [GCP Kubernetes](#gcp-kubernetes) + - [GCP Kubernetes](#gcp-kubernetes) - [SonarQube Scanners](#sonarqube-scanners) ## Introduction * [wikipedia: SonarQube](https://en.wikipedia.org/wiki/SonarQube) * [Sonarqube.org](https://www.sonarqube.org/) * [Dzone: Why SonarQube](https://dzone.com/articles/why-sonarqube-1) +* [thenewstack.io: How to Install the SonarQube Security Analysis Platform](https://thenewstack.io/how-to-install-the-sonarqube-security-analysis-platform/) ## Analyzing Code with SonarQube * [Dzone: How to quickly get started with Sonar](https://dzone.com/articles/how-quickly-get-started-sonar) @@ -18,6 +19,8 @@ * [Dzone: Quick start with sonarqube for static code analysis](https://dzone.com/articles/quick-start-witj-sonarqube-for-static-code-analysi) * [Dzone.com: Code Analysis Part 1 - Analyzing Code with SonarQube](https://dzone.com/articles/code-analysis-with-sonarqube-part-1-setup) * [Dzone.com: Code Analysis Part 2 - Analyzing Code with SonarQube](https://dzone.com/articles/code-analysis-part-2-analyzing-code-with-sonarqube) +* [navsinghoberoi.medium.com: Configure Sonarqube to analyse health of a project](https://navsinghoberoi.medium.com/configure-sonarqube-to-analyse-health-of-a-project-5cb80ff6616b) +* [thenewstack.io: How to Analyze Code and Find Vulnerabilities with SonarQube](https://thenewstack.io/how-to-analyze-code-and-find-vulnerabilities-with-sonarqube/) ## Integrations * [sonarqube.org: Bitbucket integration](https://www.sonarqube.org/bitbucket-integration/) Eliminate Bugs and Vulnerabilities diff --git a/docs/sre.md b/docs/sre.md index 8f71d4a0..56bbea1b 100644 --- a/docs/sre.md +++ b/docs/sre.md @@ -28,6 +28,8 @@ - [hernan-david-hd.medium.com: Breaking down SRE/DevOps into 5 key areas](https://hernan-david-hd.medium.com/breaking-down-sre-devops-into-5-key-areas-5aacf40e8392) - [getcortexapp.com: A guide to the best SRE tools](https://www.getcortexapp.com/post/a-guide-to-the-best-sre-tools) - [devops.com: How the SRE Role Is Evolving](https://devops.com/how-the-sre-role-is-evolving/) +- [itprotoday.com: Why Site Reliability Engineering Is Key to Modern DevOps](https://www.itprotoday.com/testing-and-quality-assurance/why-site-reliability-engineering-key-modern-devops) Among the hottest areas of growth in DevOps is the emerging field of site reliability engineering as organizations look to bake reliability into the earliest stages of the software development cycle. +- [stackpulse.com: Managing Reliability for Monoliths vs. Microservices: The Challenges for SREs](https://stackpulse.com/blog/monoliths-vs-microservices-challenges/)
[![cn do sre](images/CN-DO-SRE.png)](https://devops.com/sre-devops-cloud-native-server-cage-match/) diff --git a/docs/storage.md b/docs/storage.md index f036613c..5cc91c37 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -14,6 +14,7 @@ - [OpenShift Container Storage Operator (OCS)](#openshift-container-storage-operator-ocs) - [OCS 3 (OpenShift 3)](#ocs-3-openshift-3) - [OCS 4 (OpenShift 4)](#ocs-4-openshift-4) +- [Kubestr](#kubestr) ## Introduction - [thenewstack.io: A Guide to Running Stateful Applications in Kubernetes](https://thenewstack.io/a-guide-to-running-stateful-applications-in-kubernetes/) @@ -28,6 +29,8 @@ - [developers.redhat.com: Persistent storage in action: Understanding Red Hat OpenShift’s persistent volume framework 🌟](https://developers.redhat.com/blog/2020/10/22/persistent-storage-in-action-understanding-red-hat-openshifts-persistent-volume-framework/) - [rancher.com: What is Cloud-Native Storage?](https://rancher.com/blog/2020/what-is-cloud-native-storage) - [softwareengineeringdaily.com: Why Is Storage On Kubernetes So Hard? 🌟](https://softwareengineeringdaily.com/2019/01/11/why-is-storage-on-kubernetes-is-so-hard/) +- [devopscurry.com: Top 7 Object Storage tools to consider in 2021](https://devopscurry.com/top-7-object-storage-tools-to-consider-in-2021/) +- [thenewstack.io: Compute and Storage Should Be Decoupled for Log Management at Scale](https://thenewstack.io/why-compute-and-storage-should-be-decoupled-for-log-management-at-scale/) ## Ebooks - [redhat.com: Storage Patterns for Kubernetes for dummies](https://www.redhat.com/en/engage/kubernetes-containers-storage-s-201911201051) @@ -37,6 +40,7 @@ ### Rook - [Rook](https://rook.io/) +- [itnext.io: Using Rook On A K3s Cluster](https://itnext.io/using-rook-on-a-k3s-cluster-8a97a75ba25e) ### Robin - [Robin](https://robin.io/) @@ -94,6 +98,10 @@ - Backups available in OpenShift 4.2+ (Snapshots + Restore of Volumes) - OCS Dashboard in OCS Operator +## Kubestr +- [kubestr.io](https://kubestr.io/) Kubestr is a collection of tools to discover, validate and evaluate your kubernetes storage options. +- [blog.kasten.io: Benchmarking and Evaluating Your Kubernetes Storage with Kubestr](https://blog.kasten.io/benchmarking-kubernetes-storage-with-kubestr) + ---
[![gigaom radar report on storage](images/gigaom_radar_report_on_data_storage_for_k8s.png)](https://gigaom.com/report/gigaom-radar-for-data-storage-for-kubernetes/) diff --git a/docs/terraform.md b/docs/terraform.md index fd660967..a766d9c1 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -7,15 +7,17 @@ - [Terraform Cheat Sheets](#terraform-cheat-sheets) - [Best Practices](#best-practices) - [Terraform and CI/CD](#terraform-and-cicd) - - [OpenShift and Terraform](#openshift-and-terraform) - - [Terraform Kubernetes Operator](#terraform-kubernetes-operator) - - [Terraform and GKE](#terraform-and-gke) + - [Terraform and Kubernetes](#terraform-and-kubernetes) + - [OpenShift and Terraform](#openshift-and-terraform) + - [Terraform Kubernetes Operator](#terraform-kubernetes-operator) + - [Terraform and GCP](#terraform-and-gcp) - [Terraform and AWS](#terraform-and-aws) - - [Terraform and AKS](#terraform-and-aks) + - [Terraform and Azure](#terraform-and-azure) - [Gruntwork](#gruntwork) - [Terraform Modules](#terraform-modules) - [Terraform Quality Checks](#terraform-quality-checks) - [Enforce Policy with Sentinel](#enforce-policy-with-sentinel) +- [Reverse terraform with Terraformer](#reverse-terraform-with-terraformer) ## Packer * [packer.io](https://packer.io/) @@ -32,8 +34,6 @@ * [Dzone: managing infrastructure at scale with terraform](https://dzone.com/articles/managing-infrastructure-at-scale-with-terraform) * [Dzone: What's new in Terraform v0.12](https://dzone.com/articles/whats-new-in-terraform-v012) * [terraform-infraestructura.readthedocs.io](https://terraform-infraestructura.readthedocs.io) -* [Deploying and Managing a Minimal App in a Kubernetes Cluster with Terraform and Ansible](https://www.hashicorp.com/resources/deploying-managing-minimal-app-kubernetes-cluster-terraform-ansible/) -* [Deploy Any Resource With The New Kubernetes Provider for HashiCorp Terraform](https://www.hashicorp.com/blog/deploy-any-resource-with-the-new-kubernetes-provider-for-hashicorp-terraform/) * [Testing Infrastructure as Code on Localhost](https://www.hashicorp.com/resources/testing-infrastructure-as-code-on-localhost/) * [Why we use Terraform and not Chef, Puppet, Ansible, SaltStack, or CloudFormation](https://blog.gruntwork.io/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c) * [Terraform, can you keep a secret?](https://cloudonaut.io/terraform-can-you-keep-a-secret/) Did you know that Terraform state can - and most likely does - contain sensitive data? @@ -41,7 +41,6 @@ * [medium: AWS API Gateway](https://medium.com/@hashiroulap/terraform-aws-api-gateway-6d86a010f359) * [medium: Integration of AWS, Terraform, and GitHub for Automated Deployment Infrastructure](https://medium.com/@akshayavb99/integration-of-aws-terraform-and-github-for-automated-deployment-infrastructure-da0a19ff4e86) * [medium: Automation of Cloud-Terraform](https://medium.com/@sandupatlaabhilash1747/automation-of-cloud-terraform-5a299fb785bb) -* [kubernetes.io blog: Working with Terraform and Kubernetes](https://kubernetes.io/blog/2020/06/working-with-terraform-and-kubernetes/) * [hashicorp.com: Custom Variable Validation in Terraform 0.13](https://www.hashicorp.com/blog/custom-variable-validation-in-terraform-0-13/) * [medium: Terraform for Network Engineers: Should you be implementing Infrastructure as Code?](https://medium.com/hashicorp-engineering/terraform-for-network-engineers-should-you-be-implementing-infrastructure-as-code-73667d27d3b8) * [hashicorp.com: Learn How to Import Infrastructure Into Terraform](https://www.hashicorp.com/blog/import-infrastructure-into-terraform) @@ -52,10 +51,7 @@ * [Terraform Feature Flags & Environment Toggle Design Patterns](https://build5nines.com/terraform-feature-flags-environment-toggle-design-patterns/) * [dzone: Immutable Infrastructure CI/CD Using Hashicorp Terraform and Jenkins](https://dzone.com/articles/immutable-infrastructure-cicd-using-hashicorp-terr) This extensive article should leave few questions unanswered about creating your infrastructure. * [Announcing Databricks Labs Terraform integration on AWS and Azure](https://databricks.com/blog/2020/09/11/announcing-databricks-labs-terraform-integration-on-aws-and-azure.html) -* [hashicorp.com: New Terraform Tutorials on Provisioning and Managing Kubernetes Clusters 🌟](https://www.hashicorp.com/blog/new-terraform-tutorials-on-provisioning-and-managing-kubernetes-clusters) Explore a new collection of Terraform tutorials that can help you through your Kubernetes adoption journey. -* [hodovi.cc: Creating a Low Cost Managed Kubernetes Cluster for Personal Development using Terraform](https://hodovi.cc/blog/creating-low-cost-managed-kubernetes-cluster-personal-development-terraform/) * [hashicorp.com: Announcing 11 Verified Providers for Terraform](https://www.hashicorp.com/blog/announcing-11-verified-providers-for-terraform) -* [learnk8s.io: Provisioning Kubernetes clusters on AWS with Terraform and EKS 🌟](https://learnk8s.io/terraform-eks) Fully automated dev, test, prod environments with EKS, Terraform and the ALB Ingress Controller. * [learn.hashicorp.com: Call APIs with Terraform Providers. Learn how to use and create custom Terraform Providers in a new collection of tutorials on HashiCorp Learn 🌟](https://learn.hashicorp.com/collections/terraform/providers) * [globaldatanet.com: Terraform CI/CD Best Practices](https://globaldatanet.com/blog/terraform-cicd-best-practices) * [devblogs.microsoft.com: What is infrastructure as code? 🌟](https://devblogs.microsoft.com/devops/what-is-infrastructure-as-code/) @@ -63,22 +59,37 @@ * [hashicorp.com: New Terraform Tutorial: Sensitive Input Variables 🌟](https://www.hashicorp.com/blog/terraform-sensitive-input-variables) A new tutorial on HashiCorp Learn shows how to protect sensitive data with Terraform. * [AWS Lambda the Terraform Way](https://github.com/nsriram/lambda-the-terraform-way) The objective of this tutorial is to understand AWS Lambda in-depth, beyond executing functions, using Terraform. This tutorial walks through setting up Terraform, dependencies for AWS Lambda, getting your first Lambda function running, many of its important features & finally integrating with other AWS services. * [adinermie.com: Publishing TFSec Terraform Quality Controls to Azure DevOps Pipelines 🌟](https://adinermie.com/publishing-tfsec-terraform-quality-controls-to-azure-devops-pipelines/) -* [phillipsj.net: Dynamically Loaded Terraform Providers 🌟](https://www.phillipsj.net/posts/dynamically-loaded-terraform-providers/) Have you ever been faced with some situations where you need information from your Terraform execution to configure a provider ? Like spinning up a kubernetes cluster and dynamically deploying to it with Terraform? Check this short article for more ! * [medium: Don’t Forget to Restrict Outbound Traffic with Terraform and Sentinel](https://medium.com/hashicorp-engineering/dont-forget-to-restrict-outbound-traffic-with-terraform-and-sentinel-c74a99129dae) * [K3s Private Cluster 🌟](https://github.com/sagittaros/terraform-k3s-private-cloud) * [hashicorp.com: New Terraform Tutorial: Terraform Outputs 🌟](https://www.hashicorp.com/blog/tutorial-terraform-outputs) Learn how to output data about your infrastructure. * [trek10.com: Beginner's Guide to Using Terraform with AWS 🌟](https://www.trek10.com/blog/beginners-guide-to-using-terraform-with-aws) Beginner tips for Terraform on AWS, common problem areas and misunderstandings that we coach and train internally. * [env0.com: We’re Opensourcing Terratag to Make Multicloud Resource Tagging Easier](https://www.env0.com/blog/were-opensourcing-terratag-to-make-multicloud-resource-tagging-easier) * [hashicorp.com: Terraform Mono Repo vs. Multi Repo: The Great Debate](https://www.hashicorp.com/blog/terraform-mono-repo-vs-multi-repo-the-great-debate) Learn about the pros and cons of using mono repositories and multi repositories along with the most logical use case for each. -* [hashicorp.com: Announcing Version 2.0 of the Kubernetes and Helm Providers for HashiCorp Terraform 🌟](https://www.hashicorp.com/blog/announcing-version-2-0-kubernetes-and-helm-providers-for-hashicorp-terraform) * [clickittech.com: Terraform vs CloudFormation: The Final battle 🌟](https://www.clickittech.com/devops/terraform-vs-cloudformation/) * [terraform.io: Cloud Adoption Framework for Azure - Terraform module](https://registry.terraform.io/modules/aztfmod/caf/azurerm/latest) * [arnaudlheureux.io: Migrating Azure CAF landing zones to Terraform 0.13](https://www.arnaudlheureux.io/2020/10/02/migrating-azure-caf-landing-zones-on-terraform-0-13/) * [intellipaat.com: Terraform vs Ansible: Key Differences Between Terraform and Ansible 🌟](https://intellipaat.com/blog/terraform-vs-ansible-difference) -* [hashicorp.com: Wait Conditions in the Kubernetes Provider for HashiCorp Terraform](https://www.hashicorp.com/blog/wait-conditions-in-the-kubernetes-provider-for-hashicorp-terraform) * [tfenv](https://github.com/tfutils/tfenv) Terraform version manager inspired by rbenv -* [itnext.io: Terraform: don’t use kubernetes provider with your cluster resource! 🌟](https://itnext.io/terraform-dont-use-kubernetes-provider-with-your-cluster-resource-d8ec5319d14a) * [dev.to: Packer and Terraform with Immutable Infrastructure](https://dev.to/cloudskills/packer-and-terraform-with-immutable-infrastructure-47ja) +* [medium: Terraform: How to Use Conditionals to Dynamically Create Resources](https://medium.com/swlh/terraform-how-to-use-conditionals-for-dynamic-resources-creation-6a191e041857) …don’t struggle looking for if/else statements, you won’t find them… +* [hashicorp.com: Testing HashiCorp Terraform 🌟](https://www.hashicorp.com/blog/testing-hashicorp-terraform) Learn testing strategies for HashiCorp Terraform modules and configuration, and learn how to run tests against infrastructure. +* [cloudify.co: Ansible, Terraform And Cloudify](https://cloudify.co/blog/ansible-terraform-and-cloudify/) +* [automateinfra.com: How to Launch multiple EC2 instances on AWS using Terraform count and for_each](https://automateinfra.com/2021/03/22/how-to-launch-multiple-ec2-instances-on-aws-using-terraform/) +* [morethancertified.com: More Consistent Terraform Runs With Docker](https://morethancertified.com/terraform-in-docker) +* [deloitte.com: Infrastructure as Code (IaC) con Terraform](https://www2.deloitte.com/es/es/blog/todo-tecnologia/2021/infrastructure-as-code-iac-con-terraform.html) Automatización, escalado, optimización y ahorro en tu factura cloud +* [docs.gitlab.com: GitLab managed Terraform State 🌟](https://docs.gitlab.com/ee/user/infrastructure/terraform_state.html) Gitlab Terraform now share tfstate directly on gitlab. +* [flowfactor.be: What do you know about Terraform modules?](https://www.flowfactor.be/2021/03/18/what-do-you-know-about-terraform-modules/) +* [medium: How to manage infrastructure as code (IaC) with Terraform on AWS? 🌟](https://medium.com/workfall/how-to-manage-infrastructure-as-code-iac-with-terraform-on-aws-1fa6cd6bccfe) +* [accurics.com: Terraform Security: Improving IaC Scans with Terraform Plan Output](https://www.accurics.com/blog/terrascan-blog/terraform-security-improving-iac-scans-with-terraform-plan-output) +* [hashicorp.com: Modern Infrastructure Automation with Packer, Terraform, and Consul (video)](https://www.hashicorp.com/resources/modern-infrastructure-automation-with-packer-terraform-and-consul) +* [hashicorp.com: New Terraform Tutorials: Getting Started with the Helm and Datadog Providers 🌟](https://www.hashicorp.com/blog/getting-started-with-the-helm-and-datadog-terraform-providers) +* [hashicorp.com: How can I prevent configuration drift?](https://www.hashicorp.com/resources/how-can-i-prevent-configuration-drift) What causes our infrastructure's configuration to drift over time away from our original intended state? And how does Terraform help? +* [hashicorp.com: New Terraform Tutorials: Getting Started with the Helm and Datadog Providers](https://www.hashicorp.com/blog/getting-started-with-the-helm-and-datadog-terraform-providers) +* [hashicorp.com: Share Modules Across Organizations with Terraform Enterprise](https://www.hashicorp.com/blog/share-modules-across-organizations-terraform-enterprise) Terraform Enterprise now offers users the ability to consume private modules across organizations, providing greater management consistency. +* [cncf.io: Cloudformation vs. Terraform: Which is better?](https://www.cncf.io/blog/2021/04/06/cloudformation-vs-terraform-which-is-better/) +* [freecodecamp.org: What is Terraform? Learn Terraform and Infrastructure as Code](https://www.freecodecamp.org/news/what-is-terraform-learn-infrastructure-as-code/) +* [hashicorp.com: Announcing HashiCorp Terraform 0.15 General Availability](https://www.hashicorp.com/blog/announcing-hashicorp-terraform-0-15-general-availability) +* [learn.hashicorp.com: Manage Private Environments with Terraform Cloud Agents](https://learn.hashicorp.com/tutorials/terraform/cloud-agents) ### CDK Cloud Development Kit Terraform * [terraform-cdk 🌟](https://github.com/hashicorp/terraform-cdk) CDK (Cloud Development Kit) for Terraform allows developers to use familiar programming languages to define cloud infrastructure and provision it through HashiCorp Terraform. @@ -104,20 +115,37 @@ * [dzone: Manage Multiple Environments With Terraform Workspaces](https://dzone.com/articles/manage-multiple-environments-with-terraform-worksp) Read this tutorial to learn about easily setting up Terraform to manage your CI/CD environments and create workspaces. * [hashicorp.com: Announcing Support for Code Signing for AWS Lambda in the Terraform AWS Provider](https://www.hashicorp.com/blog/announcing-support-for-aws-lambda-code-signing-in-the-terraform-aws-provider) -### OpenShift and Terraform +### Terraform and Kubernetes +* [hashicorp.com: New Terraform Tutorials on Provisioning and Managing Kubernetes Clusters 🌟](https://www.hashicorp.com/blog/new-terraform-tutorials-on-provisioning-and-managing-kubernetes-clusters) Explore a new collection of Terraform tutorials that can help you through your Kubernetes adoption journey. +* [hodovi.cc: Creating a Low Cost Managed Kubernetes Cluster for Personal Development using Terraform](https://hodovi.cc/blog/creating-low-cost-managed-kubernetes-cluster-personal-development-terraform/) +* [Deploying and Managing a Minimal App in a Kubernetes Cluster with Terraform and Ansible](https://www.hashicorp.com/resources/deploying-managing-minimal-app-kubernetes-cluster-terraform-ansible/) +* [Deploy Any Resource With The New Kubernetes Provider for HashiCorp Terraform](https://www.hashicorp.com/blog/deploy-any-resource-with-the-new-kubernetes-provider-for-hashicorp-terraform/) +* [kubernetes.io blog: Working with Terraform and Kubernetes](https://kubernetes.io/blog/2020/06/working-with-terraform-and-kubernetes/) +* [learnk8s.io: Provisioning Kubernetes clusters on AWS with Terraform and EKS 🌟](https://learnk8s.io/terraform-eks) Fully automated dev, test, prod environments with EKS, Terraform and the ALB Ingress Controller. +* [phillipsj.net: Dynamically Loaded Terraform Providers 🌟](https://www.phillipsj.net/posts/dynamically-loaded-terraform-providers/) Have you ever been faced with some situations where you need information from your Terraform execution to configure a provider ? Like spinning up a kubernetes cluster and dynamically deploying to it with Terraform? Check this short article for more ! +* [hashicorp.com: Announcing Version 2.0 of the Kubernetes and Helm Providers for HashiCorp Terraform 🌟](https://www.hashicorp.com/blog/announcing-version-2-0-kubernetes-and-helm-providers-for-hashicorp-terraform) +* [hashicorp.com: Wait Conditions in the Kubernetes Provider for HashiCorp Terraform](https://www.hashicorp.com/blog/wait-conditions-in-the-kubernetes-provider-for-hashicorp-terraform) +* [itnext.io: Terraform: don’t use kubernetes provider with your cluster resource! 🌟](https://itnext.io/terraform-dont-use-kubernetes-provider-with-your-cluster-resource-d8ec5319d14a) +* [hashicorp.com: Announcing General Availability of the HashiCorp Terraform Cloud Operator for Kubernetes 🌟](https://www.hashicorp.com/blog/announcing-general-availability-hashicorp-terraform-cloud-operator-for-kubernetes) +* [learnk8s.io/kubernetes-terraform: Creating Kubernetes clusters with Terraform](https://learnk8s.io/kubernetes-terraform) +* [blog.kasten.io: Working with Kubernetes and Terraform Part 1: Concepts Behind Terraform and Kubernetes](https://blog.kasten.io/concepts-behind-terraform-and-kubernetes) + +#### OpenShift and Terraform * [Dzone: Platform as Code With Openshift and Terraform](https://dzone.com/articles/platform-as-code-with-openshift-amp-terraform) Learn how to set up a pipeline workflow with Openshift and the Terraform infrastructure-as-code tool to configure builds and deployments. -### Terraform Kubernetes Operator +#### Terraform Kubernetes Operator * [infoq.com: Managing Infrastructure from Kubernetes with the HashiCorp Terraform Operator](https://www.infoq.com/news/2020/04/terraform-operator-kubernetes/) -### Terraform and GKE -* [learnk8s.io: Provisioning Kubernetes clusters on GCP with Terraform and GKE 🌟](https://learnk8s.io/terraform-gke) Fully automated dev, test, prod environments with Google Kubernetes Engine (GKE) + container-native load balancing? The guide goes into the details of how you can provision your infrastructure with Terraform and how you can route live traffic with the GKE Ingress controller. By the end Kristijan M. will teach you how you can have: +### Terraform and GCP +* [learnk8s.io/terraform-gke 🌟](https://learnk8s.io/terraform-gke) Provisioning Kubernetes clusters on GCP with Terraform and GKE. Fully automated dev, test, prod environments with Google Kubernetes Engine (GKE) + container-native load balancing? The guide goes into the details of how you can provision your infrastructure with Terraform and how you can route live traffic with the GKE Ingress controller. By the end Kristijan M. will teach you how you can have: - The creation of 3 environments (dev, test, prod) automated - A cluster that can handle live traffic with the GKE Ingress controller. - GKE Ingress enabled with container-native load balancing. - All source code and knowledge to build your own infra. +* [AWS EKS Accelerator for Terraform: github.com/aws-samples/aws-eks-accelerator-for-terraform 🌟](https://github.com/aws-samples/aws-eks-accelerator-for-terraform) The AWS EKS Accelerator for Terraform is a framework designed to help deploy and operate secure multi-account, multi-region AWS environments. The power of the solution is the configuration file which enables the users to provide a unique terraform state for each cluster and manage multiple clusters from one repository. ### Terraform and AWS +* [learnk8s.io/terraform-eks 🌟](https://learnk8s.io/terraform-eks) * [Dzone: terraform and AWS](https://dzone.com/articles/terraform-and-aws) * [Dzone: terraform with AWS](https://dzone.com/articles/terraform-with-aws) * [hashicorp.com: Terraforming RDS: What Instacart Learned Managing Over 50 AWS RDS PostgreSQL Instances with Terraform](https://www.hashicorp.com/resources/terraform-what-instacart-learned-managing-over-50-aws-rds-postgresql-instances) @@ -127,8 +155,12 @@ * [thenewstack.io: Terraform on AWS: Multi-Account Setup and Other Advanced Tips](https://thenewstack.io/terraform-on-aws-multi-account-setup-and-other-advanced-tips/) * [medium: How to Provision AWS Infrastructure with Terraform? 🌟](https://medium.com/faun/provisioning-aws-infrastructure-with-terraform-6ab885fb3fcb) -### Terraform and AKS +### Terraform and Azure +- [learnk8s.io/terraform-aks 🌟](https://learnk8s.io/terraform-aks) - [itnext.io: How We Used Terraform to Create and Manage a HA AKS Kubernetes Cluster in Azure](https://itnext.io/how-we-used-terraform-to-create-and-manage-a-ha-aks-kubernetes-cluster-in-azure-812f64896c08) Learn how to use Terraform to manage a highly-available Azure AKS Kubernetes cluster with Azure AD integration and Calico network policies enabled. +- [medium: Using Terraform with Azure — the right way](https://medium.com/01001101/using-terraform-with-azure-the-right-way-35af3b51a6b0) +- [thomasthornton.cloud: Deploy Terraform using GitHub Actions to Azure](https://thomasthornton.cloud/2021/03/19/deploy-terraform-using-github-actions-into-azure/) +- [github.com/kuhlman-labs/terraform-azurerm-landing-zone](https://github.com/kuhlman-labs/terraform-azurerm-landing-zone) A curated collection of Terraform azurerm modules ## Gruntwork - [gruntwork.io](https://gruntwork.io/) @@ -136,7 +168,7 @@ - [blog.gruntwork.io: Introducing: The Gruntwork Module, Service, and Architecture Catalogs](https://blog.gruntwork.io/introducing-the-gruntwork-module-service-and-architecture-catalogs-eb3a21b99f70) ## Terraform Modules -- [Offensive Terraform Modules 🌟](https://offensive-terraform.github.io/offensive-terraform.github.io/) Automated multi step offensive attack modules with Infrastructure as Code(IAC) +- [offensive-terraform.github.io: Offensive Terraform Modules 🌟](https://offensive-terraform.github.io/offensive-terraform.github.io/) Automated multi step offensive attack modules with Infrastructure as Code(IAC) ## Terraform Quality Checks - [adinermie.com: Publishing GitHub Super-Linter Terraform Quality Checks to Azure DevOps Pipelines](https://adinermie.com/publishing-github-super-linter-terraform-quality-checks-to-azure-devops-pipelines/) @@ -144,6 +176,11 @@ ## Enforce Policy with Sentinel - [learn.hashicorp.com: Enforce Policy with Sentinel](https://learn.hashicorp.com/collections/terraform/policy#sentinel) +## Reverse terraform with Terraformer +- [github.com/GoogleCloudPlatform/terraformer 🌟](https://github.com/GoogleCloudPlatform/terraformer) A CLI tool that generates tf/json and tfstate files based on existing infrastructure (reverse Terraform). +
+ +
\ No newline at end of file diff --git a/docs/visual-studio.md b/docs/visual-studio.md index 2ecbbb48..b92a2c20 100644 --- a/docs/visual-studio.md +++ b/docs/visual-studio.md @@ -39,6 +39,8 @@ * [visualstudiomagazine.com: Code with Fire! Top VS Code Tips](https://visualstudiomagazine.com/articles/2021/01/29/vs-code-tips.aspx) * [39digits.com: How to sign your commits to GitHub using Visual Studio Code on Windows 10 and WSL2 🌟](https://www.39digits.com/signed-git-commits-on-wsl2-using-visual-studio-code) * [jung-christian.de: Ansible support in Visual Studio Code 🌟](https://www.jung-christian.de/post/2021/02/ansible-vscode/) +* [youtube: Source Control Tip 9: Dealing with Merge Conflicts in VS Code](https://www.youtube.com/watch?v=ybCxPHzRJfA&ab_channel=VisualStudioCode) +* [dev.to: Video: Visualize the architecture of your Java app, in VS Code, in 2 ¹/₂ minutes](https://dev.to/appland/video-visualize-the-architecture-of-your-java-app-in-vs-code-in-2-minutes-568j) ### Updates * [VSCode Updates](https://code.visualstudio.com/updates) @@ -56,6 +58,7 @@ ### Extensions * [GitLens 🌟](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) Git supercharged + * [GitLens interactive rebase](https://github.com/eamodio/vscode-gitlens#interactive-rebase-editor-) * [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) View a Git Graph of your repository, and easily perform Git actions from the graph. Configurable to look the way you want! * [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments) * [Bracket Pair Colorizer](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer) diff --git a/docs/web-servers.md b/docs/web-servers.md index e4ad3421..cfb84d2e 100644 --- a/docs/web-servers.md +++ b/docs/web-servers.md @@ -9,6 +9,7 @@ ## Introduction - [Reverse Proxy: What, When, How](https://dzone.com/articles/reverse-proxy-what-when-how) Look at a tutorial that explains reverse proxies. +- [opensource.com: A beginner's guide to load balancing](https://opensource.com/article/21/4/load-balancing) Load balancing distributes resources to where they're needed most at that moment. ## Apache - [Apache](https://httpd.apache.org/) diff --git a/docs/workfromhome.md b/docs/workfromhome.md index dd85403a..f91c32ef 100644 --- a/docs/workfromhome.md +++ b/docs/workfromhome.md @@ -1,6 +1,7 @@ # Work From Home - [forbes.com: 5 Essential Coronavirus Work From Home Tech Tips](https://www.forbes.com/sites/tjmccue/2020/03/13/5-essential-coronavirus-work-from-home-tech-tips/) - [dzone: How DevOps Teams Can Switch to Remote Work](https://dzone.com/articles/effective-transition-to-remote-working-for-devops) +- [enterprisersproject.com: Remote work: 10 tips to be a better virtual collaborator](https://enterprisersproject.com/article/2021/2/remote-work-virtual-collaboration-best-practices) Mismatched expectations, poor tools, or even bad manners can hurt virtual collaboration. Consider these remote working best practices for leaders and colleagues. ## Tools recommended by Forbes - [krisp](https://krisp.ai/) Noise cancelling app diff --git a/docs/yaml.md b/docs/yaml.md index 4e0f2c37..3cec44a4 100644 --- a/docs/yaml.md +++ b/docs/yaml.md @@ -3,6 +3,7 @@ - [YAML anchors and aliases](#yaml-anchors-and-aliases) - [YAML Processors](#yaml-processors) - [Kubernetes examples](#kubernetes-examples) + - [Scaffold. Built in snippets for creating k8s resources](#scaffold-built-in-snippets-for-creating-k8s-resources) - [Helm and Kustomize](#helm-and-kustomize) - [Templating JSON Files](#templating-json-files) - [Static Checking of Kubernetes YAML Files. Kubernetes YAML Validation Tools](#static-checking-of-kubernetes-yaml-files-kubernetes-yaml-validation-tools) @@ -17,6 +18,7 @@ - [linuxhandbook.com: YAML Basics Every DevOps Engineer Must Know 🌟](https://linuxhandbook.com/yaml-basics/) - [developers.redhat.com: How to configure YAML schema to make editing files easier](https://developers.redhat.com/blog/2020/11/25/how-to-configure-yaml-schema-to-make-editing-files-easier/) - [kubernetestutorials.com: Kubernetes : Introduction to YAML 🌟](https://kubernetestutorials.com/kubernetes-tutorials/kubernetes-introduction-to-yaml/) +- [betterprogramming.pub: YAML Tutorial: Get Started With YAML in 5 Minutes](https://betterprogramming.pub/yaml-tutorial-get-started-with-yaml-in-5-minutes-549d462972d8) Syntax, salient features, and advanced features. ### YAML anchors and aliases - [yaml.org: Anchors and Aliases](https://yaml.org/spec/1.2/spec.html#id2765878) @@ -39,6 +41,9 @@ ### Kubernetes examples - [Kubernetes examples 🌟](https://k8s-examples.container-solutions.com/) A series of YAML references with canonical and as-simple-as-possible demonstrations of kubernetes functionality and features. +### Scaffold. Built in snippets for creating k8s resources +- [cloud.google.com: configuring_with_snippets 🌟](https://cloud.google.com/code/docs/vscode/yaml-editing#configuring_with_snippets) GoogleCloudTech Code has built-in snippets for creating common resources (pod, service, configmap, etc). Plus diffing and dry-run of YAML. + ### Helm and Kustomize - [dex.dev: YAML Templating Solutions: Helm & Kustomize](https://www.dex.dev/dex-videos/templating-solutions) Writing config files by hand is like coding with Notepad instead of an IDE. Let's find a better way, and take an overview of the popular solutions Helm & Kustomize. @@ -47,6 +52,7 @@ - [json.org: Introducing JSON](https://www.json.org/json-en.html) - [Jsonnet](https://jsonnet.org/) A data templating language for app and tool developers - [Building a high performance JSON parser](https://dave.cheney.net/high-performance-json.html) +- [json-schema.org: Understanding JSON Schema 🌟](https://json-schema.org/understanding-json-schema/) ## Static Checking of Kubernetes YAML Files. Kubernetes YAML Validation Tools - The ecosystem of static checking of Kubernetes YAML files can be grouped in the following categories: @@ -65,5 +71,6 @@ ## Alternatives - [ketch](https://theketch.io) - [civo.com: Deployments without YAML using Ketch](https://www.civo.com/learn/deployments-without-yaml-using-ketch) - [ketch: Getting Started](https://learn.theketch.io/docs/getting-started) + - [github.com/shipa-corp/ketch](https://github.com/shipa-corp/ketch/) Ketch is an application delivery framework that facilitates the deployment and management of applications on Kubernetes using a simple command line interface. - [shipa.io: DevOps Challenge – Kubernetes Deployment: Ketch vs YAML](https://www.shipa.io/ketch/devops-challenge-kubernetes-deployment-ketch-vs-yaml/) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index ee6c3d10..43d62137 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -112,10 +112,11 @@ nav: - Client Libraries for Kubernetes - Go client, Python, Fabric8 & JKube: kubernetes-client-libraries.md - Helm Kubernetes Tool: helm.md - Liquibase & Flyway: liquibase.md - - Pulumi: pulumi.md - - Terraform & Packer: terraform.md - Template-Free Kubernetes Configuration Customization with Kustomize: kustomize.md - Templating YAML with YAML Processors. Static Checking of Kubernetes YAML Files: yaml.md + - Infrastructure Management Tools: + - Pulumi: pulumi.md + - Terraform & Packer: terraform.md - Databases on Kubernetes: - Relational Databases and Database DevOps. CrunchyData Postgres Operator: databases.md - NoSQL Databases: nosql.md