Skip to content

Commit

Permalink
Using Slidev
Browse files Browse the repository at this point in the history
  • Loading branch information
Jaykul committed Feb 26, 2024
1 parent c48ff20 commit 3d86e12
Show file tree
Hide file tree
Showing 23 changed files with 9,007 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules
.DS_Store
dist
*.local
index.html
.remote-assets
components.d.ts
3 changes: 3 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# for pnpm
shamefully-hoist=true
auto-install-peers=true
32 changes: 32 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"markdownlint.config": {
// We use --- with blank lines on each side for page separators
// But we also use it around yaml metadata FOR EACH slide
"MD003": false, // All my headers are ATX, but it thinks my slide metadata are headers
"MD022": false, // Headers should be surrounded by blank lines
// But the linter applies the rules to the whole document, instead of each slide
"MD025": false, // Multiple top level headers because each slide has it's own top level header
"MD034": false, // bare URLs required in yaml metadata
"MD033": false, // I need to write inline html for slides,
"MD024": false, // Multiple headers with the same content are probably on different slides
"MD046": {
"style": "fenced"
},

"MD001": false, // These are slides. I don't care

},
"cSpell.words": [
"Dobbs",
"emojione",
"ITIL",
"slidev",
"Weaveworks"
],
"[vue]": {
"editor.tabSize": 2
},
"[css]": {
"editor.tabSize": 2
}
}
69 changes: 69 additions & 0 deletions Abstract.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# GitOps: Beyond Patterns and Principles

In this walk-through we'll go beyond the core principles to practical tools, code and deployment patterns. We'll start with 12 Factor apps, breeze through declarative infrastructure frameworks, and end with continuous delivery and GitOps tools. By the end we'll have a full Kubernetes cluster with working software deployments.

At it's core, GitOps is just continuous delivery applied to the whole system, and actually done continuously. Deploy your infrastructure as code, and automatically deploy your software packages and configuration to that infrastructure.

High quality recipes are out there for deploying almost anything. Don't start from scratch, build on the shoulders of giants.

This is a code, configuration and demo-heavy talk, centered around the deployment of a Kubernetes cluster in the cloud and the automatic delivery of software and configuration to that cluster. We'll talk principles, and illustrate with working code the participants can clone from GitHub.



1. [Agile Manifesto](http://agilemanifesto.org/)
2. [Principles of Agile Software](http://agilemanifesto.org/principles.html)
3. [History of DevOps (Atlassian)](https://www.atlassian.com/devops/what-is-devops/history-of-devops)
4. [DevOps (Wikipedia)](https://en.wikipedia.org/wiki/DevOps)
5. [DORA](https://dora.dev/)
6. [Continuous Delivery (Wikipedia)](https://en.wikipedia.org/wiki/Continuous_delivery)
7. [Continuous Delivery: The Agile Successor (Dr. Dobbs)](https://www.drdobbs.com/architecture-and-design/continuous-delivery-the-agile-successor/240169037)
8. [Continuous Deployment (IBM)](https://www.ibm.com/topics/continuous-deployment)
9. [GitOps Principles](https://opengitops.dev/#principles)
9. [Control Theory](https://en.wikipedia.org/wiki/Control_theory)
9. [Git best practices: Workflows for GitOps Deployments](https://developers.redhat.com/articles/2022/07/20/git-workflows-best-practices-gitops-deployments#separate_your_repositories)
9. [The GitOps Guide](https://configu.com/blog/the-gitops-guide-principles-examples-tools-best-practices/#GitOps_Best_Practices)


Some of us hold that the original practice of "Agile" included the infrastructure engineering practices, but as "Scrum" became the dominant methodology (it omitted the engineering practices), the movement to automate operations and infrastructure splintered from "Agile" and became "DevOps".

Photo by <a href="https://unsplash.com/@yancymin?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Yancy Min</a> on <a href="https://unsplash.com/photos/a-close-up-of-a-text-description-on-a-computer-screen-842ofHC6MaI?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>

Photo by <a href="https://unsplash.com/@adrienconverse?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Adrien Converse</a> on <a href="https://unsplash.com/photos/a-close-up-of-a-water-droplet-with-a-blue-background-kCrrUx7US04?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>


Photo by <a href="https://unsplash.com/@fiveamstories?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Alex Shutin</a> on <a href="https://unsplash.com/photos/panoramic-photography-of-mountains-kKvQJ6rK6S4?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>

Photo by <a href="https://unsplash.com/@8moments?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Simon Berger</a> on <a href="https://unsplash.com/photos/landscape-photography-of-mountains-twukN12EN7c?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>


# EXTRA JUNK

putting everything from the network to the software versions and every setting, into a single source of truth. Not only is every change is versioned and tracked (and easy to roll back), the GitOps pipeline means that each change is applied automatically, and autmatically deployed, versioned and tracked.

controlled, scanned, checked a every part of our cluster can be deployed with a single command-line or the click of a button.

at the click of a buttoin a single deployment. With our software running in containers, GitOps lets us take it to the next level, where every version, every setting, every part of out cluster versiondeployKubernetes cluster --with all our software already installed and configured-- in a single step. GitOps lets us take it to the next level, where every pull-request we merge reconfigures our infrastructure and updates our configuration.

Not only that, but

GitOps is not just about agility and collaboration, it's the evolution of infrastructure as cattle.

There are many ways to deploy infrastructure to the cloud. Whether it's Pulumi, CloudFormation, Terraform or Bicep, you can get a Kubernetes cluster up in just a few minutes -- and GitOps can get your software deployed as fast as you can download the containers.

In this talk we'll discuss options a little, and go through a fully-automated example of how a simple pipeline can not only deploy any size Kubernetes cluster, but also deploy all the software and configuration to it, using GitOps.

If you're unfamiliar with GitOps and how it's revolutionizing software deployment, come along and see how it works in actual practice. We'll cover the basics of GitOps, why it's the best way deploy software to Kubernetes clusters, and how it can be used to deploy the clusters themselves.

We'll cover a few ways to deploy Kubernetes to the cloud, whether it's Pulumi, from Bicep
At work we routinely delete our clusters and recreate them from scratch to prove we can. It costs us 30 minutes or so

After I show you how to go from a git repository to a cluster full of software in one step, I'll show you how it all works, what it takes to keep it up to date, and how

Building world-class kubernetes clusters from infrastructure as code and GitOps can rebuild a Kubernetes cluster in 30 minutes.

Maybe add some addons from https://www.npmjs.com/
- slidev-addon-rabbit // a customer-facing timer
- slidev-addon-asciinema
- slidev-addon-watermark
- slidev-addon-chartjs
- @katzumi/slidev-addon-qrcode
16 changes: 16 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[build]
publish = "dist"
command = "npm run build"

[build.environment]
NODE_VERSION = "20"

[[redirects]]
from = "/.well-known/*"
to = "/.well-known/:splat"
status = 200

[[redirects]]
from = "/*"
to = "/index.html"
status = 200
Loading

0 comments on commit 3d86e12

Please sign in to comment.