Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
push:
branches:
- master
schedule:
# rebuild once a day at 04:17 UTC to refresh the live stats (scripts/fetch-stats.py)
- cron: "17 4 * * *"
workflow_dispatch:

defaults:
run:
Expand All @@ -13,6 +17,10 @@ defaults:
permissions:
contents: read

concurrency:
group: publish-website
cancel-in-progress: false

jobs:
build-and-publish-website:
# Depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
Expand All @@ -31,6 +39,12 @@ jobs:
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

- name: Fetch live stats
run: |
python3 scripts/fetch-stats.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Build and publish website
run: |
make publish
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
.bundle
.jekyll-metadata
.sass-cache
/_data/live_stats.json
28 changes: 15 additions & 13 deletions 404.html
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
---
layout: default
title: "Page not found"
permalink: /404.html
stylesheet: error-code
---
<div id="holder">
<div class="grid-middle">
<div class="col-5_md-12">
<h1>Oops</h1>
<h2>Something went wrong.</h2>
<p>Error code: 404<br />We can&apos;t seem to find the page you&apos;re looking for. Please check the URL to make sure the path is correct.</p>
<a class="button" href="{{ "/" | relative_url }}">Retreat to Home</a>
</div>
<div class="col-7_md-12_md-first">
<img src="{{ "/images/404.svg" | relative_url }}" />
</div>
{% include values.inc %}
<section class="section--hero">
<div class="container">
<div class="grid grid--middle">
<div class="c-5 md-12 error-text">
<h1 class="t-display">Page not found</h1>
<p class="lead">Check the URL, or start from the home page or the docs.</p>
<div class="btn-group"><a class="btn btn--primary" href="{{ "/" | relative_url }}">Back to home</a><a class="btn btn--secondary" href="{{ latestDocs | relative_url }}">Docs</a></div>
</div>
<div class="c-7 md-12 md-first hero__art">
{% include themed-img.html src="/images/404.svg" dark="/images/dark/404.svg" alt="" %}
</div>
</div>
</div>
</div>
</section>
28 changes: 15 additions & 13 deletions 500.html
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
---
layout: default
title: "Whoops"
permalink: /500.html
stylesheet: error-code
---
<div id="holder">
<div class="grid-middle">
<div class="col-5_md-12">
<h1>Whoops</h1>
<h2>Something went wrong.</h2>
<p>Error code: 500 Internal Server Error<br />We&apos;re working towards building something better. Try again soon.</p>
<a class="button" href="{{ "/" | relative_url }}">Retreat to Home</a>
</div>
<div class="col-7_md-12_md-first text-right">
<img src="{{ "/images/500.svg" | relative_url }}" />
</div>
<section class="section--hero">
<div class="container">
<div class="grid grid--middle">
<div class="c-5 md-12 error-text">
<h1 class="t-display">Whoops</h1>
<h2 class="t-h3">Something went wrong.</h2>
<p class="lead">Error code: 500 Internal Server Error<br>Something went wrong on our side. Try again in a minute.</p>
<div class="btn-group"><a class="btn btn--primary" href="{{ "/" | relative_url }}">Back to home</a></div>
</div>
<div class="c-7 md-12 md-first hero__art">
{% include themed-img.html src="/images/500.svg" dark="/images/dark/500.svg" alt="" %}
</div>
</div>
</div>
</div>
</section>
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -265,4 +265,4 @@ DEPENDENCIES
webrick (~> 1.8)

BUNDLED WITH
2.3.25
2.3.27
30 changes: 13 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
.PHONY: help run build publish

# https://pages.github.com/versions/
JEKYLL_DOCKER_IMAGE ?= docker.io/jekyll/jekyll:4.2.2
JEKYLL_DOCKER_IMAGE ?= docker.io/library/ruby:3.1

# Gems go to vendor/bundle (gitignored, excluded from the site). Runs as the calling user so files stay theirs.
JEKYLL_DOCKER_RUN = docker run --rm -i \
--user "$(shell id -u):$(shell id -g)" -e HOME=/tmp \
-e BUNDLE_PATH=/srv/jekyll/vendor/bundle -e PAGES_REPO_NWO=rook/rook.github.io \
--volume="$(PWD):/srv/jekyll" --workdir /srv/jekyll

CURRENT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)

Expand All @@ -14,21 +20,14 @@ help: ## Show this help menu.

run: ## run jekyll in development mode
run:
docker run --rm -i \
-p 4000:4000 -p 4001:4001 \
--volume="$(PWD)/vendor/bundle:/usr/local/bundle" \
--volume="$(PWD):/srv/jekyll" \
$(JEKYLL_DOCKER_IMAGE) -- \
jekyll serve --livereload --livereload-port 4001
$(JEKYLL_DOCKER_RUN) -p 4000:4000 -p 4001:4001 $(JEKYLL_DOCKER_IMAGE) \
bash -c 'bundle install && bundle exec jekyll serve --host 0.0.0.0 --livereload --livereload-port 4001'

build: ## build output is in _site
build:
mkdir -p _site/
docker run --rm -i \
--volume="$(PWD)/vendor/bundle:/usr/local/bundle" \
--volume="$(PWD):/srv/jekyll" \
$(JEKYLL_DOCKER_IMAGE) -- \
jekyll build
$(JEKYLL_DOCKER_RUN) $(JEKYLL_DOCKER_IMAGE) \
bash -c 'bundle install && bundle exec jekyll build'
# Correct permissions when running in CI
if test "$$CI" = "true"; then sudo chown -R "$(shell id -u):$(shell id -g)" _site/; fi
# Copy the "no jekyll build" file so Github pages does not build the gh-pages branch
Expand All @@ -37,11 +36,8 @@ build:

bundle_update: ## Update Gemfile.lock (via bundler)
bundle_update:
docker run --rm -i \
--volume="$(PWD)/vendor/bundle:/usr/local/bundle" \
--volume="$(PWD):/srv/jekyll" \
jekyll/jekyll -- \
bundle update
$(JEKYLL_DOCKER_RUN) $(JEKYLL_DOCKER_IMAGE) \
bash -c 'bundle update'

publish: ## push changed files to the live site through the gh-pages branch
publish: build
Expand Down
1 change: 1 addition & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ exclude:
- Gemfile.lock
- Makefile
- README.md
- scripts
- vendor

defaults:
Expand Down
75 changes: 75 additions & 0 deletions _data/contributors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Display order. Avatars are local files in images/contributors/<login>.jpg.
- travisn
- leseb
- BlaineEXE
- subhamkrai
- jbw976
- bassam
- galexrt
- jhoblitt
- Madhu-1
- parth-gr
- satoru-takeuchi
- sp98
- obnoxxx
- thotz
- Rakshith-R
- OdedViner
- rkachach
- arttor
- dangula
- kokhang
- rohan47
- dotnwat
- aruniiird
- umangachapagain
- rohantmp
- phlogistonjohn
- iPraveenParihar
- humblec
- jmolmo
- alimaredia
- sebastianriese
- anmolsachan
- anxkhn
- nixpanic
- avanthakkar
- y1r
- ahmadnurus
- jtlayton
- nizamial09
- jshen28
- taraasrita10
- arm64b
- varshar16
- binoue
- ideepika
- davidvossel
- degorenko
- Javlopez
- microyahoo
- ashishranjan738
- sebastian-philipp
- synarete
- yati1998
- invidian
- TomHellier
- consideRatio
- Sheetalpamecha
- mvollman
- thephred
- AnikaYadav1
- iamniting
- patrostkowski
- giovanism
- anthonyeleven
- NymanRobin
- takirala
- sathieu
- mazarmi
- zhucan
- samkulkarni20
- black-dragon74
- elias-dbx
- DoubleDensity
- raaizik
118 changes: 118 additions & 0 deletions _data/faq.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# FAQ. `home: true` items show on the homepage, in this order; /faq/ shows all.
# group: evaluating | running (the two /faq/ sections). home_q / home_a override the question and answer
# on the homepage only; /faq/ keeps the full text.
- id: production-ready
group: evaluating
q: "Is Rook production-ready? Who runs it?"
a: "Yes. The Rook Ceph operator was declared stable in 2018, and Rook is a CNCF graduated project. Organizations run it in production at petabyte scale."
links:
- { label: "Who runs Rook", url: "https://github.com/rook/rook/blob/master/ADOPTERS.md" }
- { label: "Rook docs", url: "https://rook.io/docs/rook/latest-release/" }
- id: operator-down
home: true
group: evaluating
q: "What happens to my data if the Rook operator goes down?"
a: "Your data keeps flowing. Rook is not in the Ceph data path: applications read and write directly to Ceph. Management tasks such as upgrades and configuration changes resume when the operator is back."
links:
- { label: "Storage architecture", url: "https://rook.io/docs/rook/latest-release/Getting-Started/storage-architecture/" }
- id: rook-or-cephadm
home: true
group: evaluating
q: "Rook or cephadm?"
a: "Both are installers recommended by the Ceph documentation. Choose Rook if you run Kubernetes and want storage managed through its APIs. Choose cephadm for Ceph clusters outside Kubernetes."
links:
- { label: "Ceph docs: Installing Ceph", url: "https://docs.ceph.com/en/latest/install/" }
- id: fork
home: true
group: evaluating
q: "Is Rook a fork of Ceph? Does it slow Ceph down?"
a: "No. Rook runs the official upstream Ceph images, and the usual `ceph` tools and the Ceph Dashboard work as before. For the best performance, give Ceph its own networks."
links:
- { label: "Network providers", url: "https://rook.io/docs/rook/latest-release/CRDs/Cluster/network-providers/" }
- { label: "Ceph Dashboard", url: "https://rook.io/docs/rook/latest-release/Storage-Configuration/Monitoring/ceph-dashboard/" }
- id: requirements
home: true
group: evaluating
q: "What do I need?"
a: "A Kubernetes cluster on amd64 or arm64 nodes, with local disks or block volumes for Ceph. One VM is enough to try Rook; production starts at three nodes."
links:
- { label: "Prerequisites", url: "https://rook.io/docs/rook/latest-release/Getting-Started/Prerequisites/prerequisites/" }
- id: upgrades
home: true
group: evaluating
q: "How do upgrades work, and how often is Rook released?"
home_q: "How often is Rook released?"
home_a: "A new minor release ships about every four months, and the two most recent are maintained."
a: "Change the Ceph version in your spec and Rook rolls the upgrade out across the daemons, checking Ceph's health as it goes. A new minor release ships about every four months, and the two most recent are maintained."
links:
- { label: "Upgrade guide", url: "https://rook.io/docs/rook/latest-release/Upgrade/ceph-upgrade/" }
- { label: "Supported versions", url: "https://rook.io/docs/rook/latest-release/Getting-Started/maintenance-and-support/" }
- id: security
home: true
group: evaluating
q: "Is it secure?"
a: "Rook can encrypt data at rest and in transit, integrates with external key managers such as HashiCorp Vault, and has a private vulnerability disclosure process through the CNCF. It was audited by Trail of Bits in 2019."
home_a: "Rook has a private vulnerability disclosure process through the CNCF, and an independent firm audited it in 2019."
links:
- { label: "Security policy", url: "https://github.com/rook/rook/blob/master/SECURITY.md" }
- { label: "Encryption docs", url: "https://rook.io/docs/rook/latest-release/Storage-Configuration/Advanced/key-management-system/" }
- id: support
home: true
group: evaluating
q: "Can I get commercial support?"
a: "Yes. The companies on our support page offer Rook support and services, and several commercial storage products are built on Rook."
links:
- { label: "Support providers", url: "/support" }
- id: control-plane
group: running
q: "What if the Kubernetes control plane goes down?"
a: "Running Ceph daemons and mounted volumes keep serving data. New pods, volumes and mounts wait until the control plane is back, so plan its availability like any other dependency of your storage."
links:
- { label: "Storage architecture", url: "https://rook.io/docs/rook/latest-release/Getting-Started/storage-architecture/" }
- id: lose-cluster
group: running
q: "What if I lose the whole Kubernetes cluster?"
a: "Your data is on the Ceph disks, not in Kubernetes. The disaster recovery guide shows how to bring an existing Rook Ceph cluster up in a new Kubernetes cluster."
links:
- { label: "Disaster recovery guide", url: "https://rook.io/docs/rook/latest-release/Troubleshooting/disaster-recovery/" }
- id: existing-cluster
group: running
q: "Can I use an existing Ceph cluster?"
a: "Yes. In external mode, Rook connects your Kubernetes workloads to a Ceph cluster you already run, for example one managed by cephadm."
links:
- { label: "External cluster", url: "https://rook.io/docs/rook/latest-release/CRDs/Cluster/external-cluster/external-cluster/" }
- id: cloud-airgapped
group: running
q: "Can I run it in the cloud or air-gapped?"
a: "Yes. In the cloud, Rook builds Ceph on block volumes from your provider's storage class. For air-gapped sites, mirror the images to your own registry."
links:
- { label: "PVC-based clusters", url: "https://rook.io/docs/rook/latest-release/CRDs/Cluster/pvc-cluster/" }
- { label: "Private registries", url: "https://rook.io/docs/rook/latest-release/Getting-Started/Prerequisites/authenticated-registry/" }
- id: maintainers
group: running
q: "Who maintains Rook? Is it controlled by one vendor?"
a: "Maintainers come from several companies and research organizations, and more than 580 organizations have contributed. Governance rules bar any single company from holding a majority on the steering committee."
links:
- { label: "Maintainers", url: "https://github.com/rook/rook/blob/master/OWNERS.md" }
- { label: "Governance", url: "https://github.com/rook/rook/blob/master/GOVERNANCE.md" }
- id: only-s3
group: running
q: "Can I use Rook only for S3, or only for block volumes?"
a: "Yes. Each storage type is a separate resource, so you deploy only what you need: an object store, block pools, a filesystem, or any mix."
links:
- { label: "Object storage", url: "https://rook.io/docs/rook/latest-release/Storage-Configuration/Object-Storage-RGW/object-storage/" }
- { label: "Block storage", url: "https://rook.io/docs/rook/latest-release/Storage-Configuration/Block-Storage-RBD/block-storage/" }
- id: license
group: running
q: "What is the license?"
a: "Rook is Apache 2.0. Ceph is LGPL (2.1 or 3.0)."
links:
- { label: "Rook license", url: "https://github.com/rook/rook/blob/master/LICENSE" }
- { label: "Ceph license", url: "https://github.com/ceph/ceph/blob/main/COPYING" }
- id: help
group: running
q: "Where do I get help?"
a: "Ask in the Rook Slack or GitHub Discussions, and join the monthly community meeting."
links:
- { label: "Slack", url: "https://slack.rook.io" }
- { label: "Community meeting", url: "https://github.com/rook/rook#community-meeting" }
Loading
Loading