diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9ec29a153bfca45e3c3e2f27a100ee4209f1b6bb..c7c6d07c4074f3783d661c1888c89b1671cc30df 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,12 @@ -image: gcr.io/kaniko-project/executor:latest - variables: GIT_SUBMODULE_STRATEGY: recursive +stages: + - build + - deploy + test: + stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] @@ -13,11 +16,24 @@ test: - master build: + stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] script: - - echo "{\"auths\":{\"docker.io\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination index.docker.io/indiepaas/website:$CI_COMMIT_TAG + - cp $DOCKER_SECRET_CONFIG /kaniko/.docker/config.json + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination indiepaas/website:$CI_COMMIT_SHORT_SHA only: - master + +deploy: + stage: deploy + tags: + - deploy + image: + name: lachlanevenson/k8s-kubectl + entrypoint: [""] + script: + - cat $CI_PROJECT_DIR/k8s.yml | sed "s/latest/$CI_COMMIT_SHORT_SHA/" | kubectl apply -f - + only: + - master \ No newline at end of file diff --git a/config.toml b/config.toml index 2d362b1394ca9e003d879474aba9ba61686f9567..11deb4684a1638aae4b49debf8d275bb0de1e3d3 100644 --- a/config.toml +++ b/config.toml @@ -4,4 +4,49 @@ title = "libre.sh - Kubernetes the libre way." theme = "hugo-theme-learn" # For search functionality [outputs] -home = [ "HTML", "RSS", "JSON"] \ No newline at end of file +home = [ "HTML", "RSS", "JSON"] + +[[menu.shortcuts]] +name = " Contribute" +url = "/contribute" +weight = 10 + +[[menu.shortcuts]] +name = " Forum" +url = "https://talk.libreho.st/c/libre-sh" +weight = 11 + +[[menu.shortcuts]] +name = " Matrix Channel" +url = "https://matrix.to/#/!PqJHpgkUYykvCiwdFI:matrix.allmende.io?via=matrix.org&via=matrix.allmende.io&via=chat.weho.st" +weight = 20 + +[[menu.shortcuts]] +name = " Sponsor" +url = "https://opencollective.com/libresh" +weight = 28 + +[[menu.shortcuts]] +name = " Free mentoring" +url = "/mentoring" +weight = 25 + +[[menu.shortcuts]] +name = " Roadmap" +url = "/roadmap" +weight = 26 + +[[menu.shortcuts]] +name = " License" +url = "/License" +weight = 28 + +[[menu.shortcuts]] +name = " Credits" +url = "/credits" +weight = 30 + + +[params] + editURL = "https://lab.libreho.st/libre.sh/kubernetes/website/tree/master/content/" + themeVariant = "blue" \ No newline at end of file diff --git a/content/Comparison/_index.md b/content/Comparison/_index.md index 198fbaa595a7678f64601fc63dd12dded410d767..a6d084237e328e634f8b6ba0d9119d43bca7aef5 100644 --- a/content/Comparison/_index.md +++ b/content/Comparison/_index.md @@ -1,7 +1,7 @@ --- -title: Comparison to other software -pre: "4. " -weight: 4 +title: Comparison to +pre: "5. " +weight: 5 --- - yunohost diff --git a/content/Contributing/_index.md b/content/Contributing/_index.md deleted file mode 100644 index 09ce4e3bd7078cc2d7f5b74f9ff4f9592b17ef17..0000000000000000000000000000000000000000 --- a/content/Contributing/_index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: How to contribute ---- \ No newline at end of file diff --git a/content/Disclaimer/_index.md b/content/Disclaimer/_index.md deleted file mode 100644 index c4b8929b6830cfaea401dbc7339dd3944fdf5855..0000000000000000000000000000000000000000 --- a/content/Disclaimer/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: disclaimer -weight: 6 ---- - -In case you wondered, we are an anti capitalist project. It is a free software project, not open source. This is a project about human rights, not about efficient development. We use AGPL, [your compagny problably doesn't like it anyway](https://opensource.google/docs/using/agpl-policy/), and not MIT. We consider that the greatest freedom, shouldn't be a company freedom to be able to close the source code, but a user freedom to always have it libre. \ No newline at end of file diff --git a/content/FreeMentoring/_index.md b/content/FreeMentoring/_index.md deleted file mode 100644 index 5854845a8c80f34064dca57281aa93fbb4b7704c..0000000000000000000000000000000000000000 --- a/content/FreeMentoring/_index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -title: Free mentoring ---- \ No newline at end of file diff --git a/content/FurtherReading/_index.md b/content/FurtherReading/_index.md index 709a6e30904554589ea65e1d516a3db0472ad561..995ac26f078ba4dd432b28b48df8145648998de4 100644 --- a/content/FurtherReading/_index.md +++ b/content/FurtherReading/_index.md @@ -1,7 +1,7 @@ --- title: Further reading -pre: "5. " -weight: 5 +pre: "6. " +weight: 6 --- - [The Illustrated Children's Guide to Kubernetes](https://www.youtube.com/watch?v=4ht22ReBjno) - a nice getting started diff --git a/content/GettingStarted/Layers/_index.md b/content/GettingStarted/Layers/_index.md index 4ebba9b714eb75e65ed704480c83a30cdbbe17f4..6d0675b637345f56703a08b9d6ef27b6ed5f1ca1 100644 --- a/content/GettingStarted/Layers/_index.md +++ b/content/GettingStarted/Layers/_index.md @@ -2,11 +2,11 @@ title: "Layers" --- -## Layer 0 - Infra +## Layer 0 - infra Create 9 machines on your favorite place. We'll not details the steps here. We use hetzner cloud. Deploy a debian or ubuntu or your favorite distrib. -## Layer 1 - Network +## Layer 1 - network Then we need to prepare the Network: @@ -53,10 +53,10 @@ This is our curated list of operators: - [Redis operator](https://github.com/spotahome/redis-operator) - [Stash](https://github.com/appscode/stash/) for backups/restore -## Layer 5 - low level operators +## Layer 5 - upstream operators -## Layer 6 - high level operator +## Layer 6 - libre.sh operator -## Layer 7 - Web UI +## Layer 7 - web UI UI to let people self serve. The status of this is clearly [vaporware](https://en.wikipedia.org/wiki/Vaporware), but we hope to release an alpha by begining of 2021 (Except if you have skills and want to work on it already, this would be amazing ;) ). \ No newline at end of file diff --git a/content/GettingStarted/_index.md b/content/GettingStarted/_index.md index 89244a36d0cdf9232ae5ce83278934ec914a972e..9a5be4817e59bcadc965a5172608d94cd1665f4b 100644 --- a/content/GettingStarted/_index.md +++ b/content/GettingStarted/_index.md @@ -1,7 +1,7 @@ --- title: "Getting started" -pre: "2. " -weight: 2 +pre: "3. " +weight: 3 --- ## A layered and modular architecture diff --git a/content/ProblemToSolve/BackingServices/_index.md b/content/KubernetesOperators/BackingServices/_index.md similarity index 72% rename from content/ProblemToSolve/BackingServices/_index.md rename to content/KubernetesOperators/BackingServices/_index.md index 0f8a6de58c488c8f201c5fd5642844951269d2c6..19deb82eedc522b6a83d0187d69fafcacece5e33 100644 --- a/content/ProblemToSolve/BackingServices/_index.md +++ b/content/KubernetesOperators/BackingServices/_index.md @@ -1,19 +1,19 @@ --- title: Backing services -weight: 4 +weight: 1 --- [Backing services](https://12factor.net/backing-services) are necessary to any web application you deploy. In our example, we'll need a prostgres database. -So, we'll need to deploy a postgres database on kubernetes. For that we'll use an operator. There are currently around 5 different operators. Libre.sh curated one for you, the one developped by [Zalando](https://github.com/zalando/postgres-operator). +So, we'll need to deploy a postgres database on kubernetes. For that we'll use an operator. There are currently [around 5 different postgres operators](https://github.com/operator-framework/awesome-operators). Libre.sh curated one for you, the one developped by [Zalando](https://github.com/zalando/postgres-operator). Once you have [the operator running](https://github.com/zalando/postgres-operator/blob/master/docs/quickstart.md) in your cluster, we can deploy a postgres instance. With the kubernetes API that is declarative, this is how you'd do: ``` -cat << EOF | kubectl -f - +cat << EOF | kubectl apply -f - apiVersion: "acid.zalan.do/v1" kind: postgresql metadata: diff --git a/content/ProblemToSolve/HighLevelOperator/_index.md b/content/KubernetesOperators/LibreshOperator/_index.md similarity index 88% rename from content/ProblemToSolve/HighLevelOperator/_index.md rename to content/KubernetesOperators/LibreshOperator/_index.md index 668b1dff6197a35c6e9aaef1e902ebfccb6c27fc..6750b547fb945a2514fdf337a539152e85fceb7d 100644 --- a/content/ProblemToSolve/HighLevelOperator/_index.md +++ b/content/KubernetesOperators/LibreshOperator/_index.md @@ -1,12 +1,12 @@ --- -title: High level operator +title: Libre.sh operator weight: 20 --- As explained at the begining, libre.sh is a distribution where services are curated and integrated together. We assume that you use the zalando postgres operator. We also know the domain name from the annotation in the namespace. -So then we can build a high level or libre.sh Nextcloud operator (still to be built). +So then we can build a libre.sh Nextcloud operator (still to be built). And deploying a Nextcloud instance would look like this: diff --git a/content/KubernetesOperators/UpstreamOperator/_index.md b/content/KubernetesOperators/UpstreamOperator/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..f019759bb0fc731466012cc269d9480dbf789e4f --- /dev/null +++ b/content/KubernetesOperators/UpstreamOperator/_index.md @@ -0,0 +1,41 @@ +--- +title: Upstream operator +weight: 10 +--- + +Now that Postgres is running, we can deploy our Nextcloud. + +But first we need to deploy the nextcloud upstream operator. This operator is low level because it would need every information about the backing services. It is a nice building block for projects like libre.sh. + +Here is the version alpha we are developing. The goal is to move it's development upstream. We think that this belongs to Nextcloud community to own this. And we'll help bootstrap that. The same way we did with [some](https://github.com/RocketChat/Docker.Official.Image/commit/a951f488fb2a633fc89ad3048eb451aa05dc90ee) [official](https://github.com/nextcloud/docker/commit/8fa384bcd6619b9c19c5efbcdf7248d803e43727) [docker](https://github.com/matomo-org/docker/commit/e6538b90a4c7e7e3d6423d1e4740e674ee42eede) [images](https://github.com/idno/Known-Docker/commit/394e91c21d33914899dd2b0b211be2d7fe4e1837). + +Here is how the Nextcloud instance object would look like: + +``` +cat << EOF | kubectl apply -f - +apiVersion: "nextcloud.com/v1" +kind: nextcloud +metadata: + name: cloud + namespace: fight-marketing +spec: + postgress: + endpoint: nextcloud-postgres + secret: nextcloud-postgres-secret + volume: + size: 1Gi + numberOfInstances: 2 + domainNames: + - fight.marketing +EOF +``` + +After some minutes, you'd get an up and running Nextcloud instance. behind the scene it would have provisionned the following: + + - the deployment with 2 pods with a php container with Nextcloud code + - a cron job + - a web container to serve static assets + - an ingress with a Let's Encrypt certificate + - installed Nextcloud + +Upstream operators are already nice you'd say. But keep in mind that we are discussing about 7 backing services. So for each Nextcloud instance, you'd need to do the plumbing manually of each backing service manually. Let's go now to the libre.sh operator. \ No newline at end of file diff --git a/content/ProblemToSolve/WrapUp/_index.md b/content/KubernetesOperators/WrapUp/_index.md similarity index 68% rename from content/ProblemToSolve/WrapUp/_index.md rename to content/KubernetesOperators/WrapUp/_index.md index 94f7799b55ea9cbb8e798341d21f35882107b9bb..332d0e4ec2050c169de971acd695157b6a028e21 100644 --- a/content/ProblemToSolve/WrapUp/_index.md +++ b/content/KubernetesOperators/WrapUp/_index.md @@ -3,7 +3,7 @@ title: Wrap Up weight: 100 --- -This concept of low and high level operators enables us to build nice and reusable code upstream and also have a really tailored operator for our libre.sh needs. +This concept of upstream and libre.sh operators enables us to build nice and reusable code upstream and also have a really tailored operator for our libre.sh needs. Once the 2 levels are built, it is not difficult to add a UI on top of it. diff --git a/content/KubernetesOperators/_index.md b/content/KubernetesOperators/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..b11a282e2561b07876f3061de051c27e58cd6b4c --- /dev/null +++ b/content/KubernetesOperators/_index.md @@ -0,0 +1,9 @@ +--- +title: Kubernetes Operators +pre: "2. " +weight: 2 +--- + +For a more in depth view of what is kubernetes or what are opertators, you should read the [why kubernetes](/whykubernetes/). + +But first let's move on with our example to start to get a taste of what is our solution. \ No newline at end of file diff --git a/content/ProblemToSolve/IndieHostersTale/_index.md b/content/ProblemToSolve/IndieHostersTale/_index.md index 0149f761dac3fdd9362e9c89fabdcc572e788a9e..6dc99850a7ed5e94d42bd9242a34f32df8331865 100644 --- a/content/ProblemToSolve/IndieHostersTale/_index.md +++ b/content/ProblemToSolve/IndieHostersTale/_index.md @@ -5,7 +5,7 @@ weight: 1 ## Once upon a time in Lisboa -a young guy started to host WordPresses for his friends on a Raspberry. Then he teamed with a new friend to create IndieHosters. This project was about hosting freesoftware for people. Little by little, they gained popularity and bigger and bigger organisations trusted them to host there software. There was some up and some down about how to pay the rent with this service. A new team member came along. And eventually, they finally managed to secure a bigger client and some nice smaller one. The rent was mostly paid. +a young guy started to host WordPresses for his friends on a Raspberry. Then he teamed with a new friend to create IndieHosters. This project was about hosting free software for people. Little by little, they gained popularity and bigger and bigger organisations trusted them to host there software. There was some up and some down about how to pay the rent with this service. A new team member came along. And eventually, they finally managed to secure a bigger client and some nice smaller one. The rent was mostly paid. At this point, they realized that hosting for people is just not profitable at all, or they would need some volume. diff --git a/content/ProblemToSolve/LowLevelOperator/_index.md b/content/ProblemToSolve/LowLevelOperator/_index.md deleted file mode 100644 index 297866d21939d6cf7e20bce98a27359a28077bd1..0000000000000000000000000000000000000000 --- a/content/ProblemToSolve/LowLevelOperator/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Low level operator -weight: 10 ---- - -Now that Postgres is running, we can deploy our Nextcloud. - -But first we need to deploy the nextcloud low level operator. This operator is low level because it would need every information about the backing services. It is a nice building block for projects like libre.sh. - -Here is the version alpha we are developing. The goal is to move it's development upstream. We think that this belong to Nextcloud community to own this. And we'll help bootstrap that. The same way we did with [some](https://github.com/RocketChat/Docker.Official.Image/commit/a951f488fb2a633fc89ad3048eb451aa05dc90ee) [official](https://github.com/nextcloud/docker/commit/8fa384bcd6619b9c19c5efbcdf7248d803e43727) [docker](https://github.com/matomo-org/docker/commit/e6538b90a4c7e7e3d6423d1e4740e674ee42eede) [images](https://github.com/idno/Known-Docker/commit/394e91c21d33914899dd2b0b211be2d7fe4e1837). - -Here is how the Nextcloud instance object would look like: - -``` -cat << EOF | kubectl -f - -apiVersion: "nextcloud.com/v1" -kind: nextcloud -metadata: - name: cloud - namespace: fight-marketing -spec: - postgress: - endpoint: nextcloud-postgres - secret: nextcloud-postgres-secret - volume: - size: 1Gi - numberOfInstances: 2 - domainNames: - - fight.marketing -EOF -``` - -After some minutes, you'd get an up and running Nextcloud instance. behind the scene it would have provisionned the following: - - - the php container with Nextcloud code - - a cron job - - a web container to serve static assets - - an ingress with a Let's Encrypt certificate - - started and installed Nextcloud - -Low level, or upstream operators are already nice you'd say. But keep in mind that we are discussing about 7 backing services. So for each Nextcloud instance, you'd need to do the plumbing manually of each backing service manually. Let's go now to the high level operator. \ No newline at end of file diff --git a/content/ProblemToSolve/TheExample/_index.md b/content/ProblemToSolve/TheExample/_index.md index 48d62d36bd3f5dac01a546e4e90a2e81494611cd..f479f1700a43e73dfa4629992e0056baba86bda0 100644 --- a/content/ProblemToSolve/TheExample/_index.md +++ b/content/ProblemToSolve/TheExample/_index.md @@ -19,4 +19,6 @@ This is to deploy a reliable and scalable Nextcloud instance. For the sake of si We'll assume for the rest of the example that you already got a kubernetes cluster running. -The domain name of the association is `fight.marketing`. You already created a namespace `fight-marketing` and added the annotation `domaine-name: fight.marketing` \ No newline at end of file +The domain name of the association is `fight.marketing`. You already created a namespace `fight-marketing` and added the annotation `domaine-name: fight.marketing`. + +Let's now see how we solve our problem with the [kubernetes operators](/kubernetesoperators/). \ No newline at end of file diff --git a/content/ProblemToSolve/_index.md b/content/ProblemToSolve/_index.md index 61258a92960c0d487ec3446c0c0c9ec98eb5a207..da655eecd0e11145613b17d3c104883444a5529e 100644 --- a/content/ProblemToSolve/_index.md +++ b/content/ProblemToSolve/_index.md @@ -6,12 +6,12 @@ weight: 1 What is the problem to solve? It is always a great question to ask before starting a project. -For libre.sh, since version 1, the problem to solve is the same: +For libre.sh, since version 1, the problem to solve is the same, How do we : - - How do we host free software at scale? - - How do we make it cheaper in term of admin time? - - How do we improve reliability of our platform? - - How do we share our SysAdmin recipes? + - host free software at scale? + - make it cheaper in term of admin time? + - improve reliability of our platform? + - share our SysAdmin recipes? These are the questions we think we found answers in 2 words, [kubernetes](/whykubernetes/) operators. Let's detail what we envision about operators and why it is so great. But first, let's start with a little tale. \ No newline at end of file diff --git a/content/WhyKubernetes/Misc/_index.md b/content/WhyKubernetes/Misc/_index.md index 8ce2d21d9f506919bd5973a01e107a9bb01a10ff..2c695178c1d4f914bba80ebb2f651f6e94d42963 100644 --- a/content/WhyKubernetes/Misc/_index.md +++ b/content/WhyKubernetes/Misc/_index.md @@ -20,7 +20,7 @@ And because of this reason, kubernetes is greener than classic virtualisation. ## complexity -Kubernetes is made to [manage thousands of VMs and hundred of thousands of pods](https://docs.openshift.com/container-platform/4.2/scalability_and_performance/planning-your-environment-according-to-object-limits.html). At this scale, the underlying platform has to be somewhat complexe. +Kubernetes is made to [manage thousands of VMs and hundred of thousands of pods](https://docs.openshift.com/container-platform/4.2/scalability_and_performance/planning-your-environment-according-to-object-limits.html). At this scale, the underlying platform has to be somewhat complex. But once you understand kubernetes, you realize that it is actually beautifully simple inside. @@ -39,7 +39,7 @@ Go to [Julia Evan's blog](https://jvns.ca/categories/kubernetes/) to discover mo As you see, it is pretty simple, and that's why it is reliable, even at the google scale. -In term of network, it is also complexe, as you have to span an overlay network between different host and give an IP address to each pod. It is a complexe problem to solve, but some smarter people already solved it, so we can rely on such solutions. +In term of network, it is also complex, as you have to span an overlay network between different host and give an IP address to each pod. It is a complex problem to solve, but some smarter people already solved it, so we can rely on such solutions. ## security diff --git a/content/WhyKubernetes/Operators/_index.md b/content/WhyKubernetes/Operators/_index.md index 0205733db506fb4e2aac1dcc2c71af6d5fba998a..9bc490bef8752fa36356566ed86ce87a5784880e 100644 --- a/content/WhyKubernetes/Operators/_index.md +++ b/content/WhyKubernetes/Operators/_index.md @@ -20,7 +20,7 @@ One way to extend the kubernetes API, is with what is called Custom Resource Def #### History -The concept of operator was first introduced by [CoreOS in this blog post](https://coreos.com/blog/introducing-operators.html), and I recommend you to read it. We got immediately excited, and now all the industry is speaking about it. There is even a WordPress operator (More on that later). +The concept of operator was first introduced by [CoreOS in this blog post](https://coreos.com/blog/introducing-operators.html), and we recommend you to read it. We got immediately excited, and now all the industry is speaking about it. There is even a WordPress operator (More on that later). #### Why is it so exciting diff --git a/content/WhyKubernetes/TheCloudAPI/_index.md b/content/WhyKubernetes/TheCloudAPI/_index.md index 8c02788fc2c393c4cef584598b718a6f32c59aeb..d668cad7d2f2ef782b7b81e3db89d7f6d1080668 100644 --- a/content/WhyKubernetes/TheCloudAPI/_index.md +++ b/content/WhyKubernetes/TheCloudAPI/_index.md @@ -14,7 +14,7 @@ Between the lines, you can read that the intent behind kubernetes is to become, ## Not the first abstraction to cloud APIs -It is not the first time that open source project try to be an abstraction to popular cloud vendors. I can name a few like ansible, or terraform. But they failed, because at the end of the day, you need to take care of the little vairations of each provider. +It is not the first time that open source project try to be an abstraction to popular cloud vendors. There are a few like ansible, or terraform. But they failed, because at the end of the day, you need to take care of the little vairations of each provider. ## what is a cloud API @@ -37,10 +37,10 @@ And kubernetes provides this nice abstraction for everyhting you need to run hos ## Google compete against AWS Another thing to keep in mind is that Google Cloud is a direct competitor of AWS. -At the time of open sourcing Kubernetes, the docker orchestration war already started, and the world was desparetly in need of a nice orchestrator. Google had a bit of experience in this field. And I think, they saw a nice opportunity to compete against AWS. +At the time of open sourcing Kubernetes, the docker orchestration war already started, and the world was desparetly in need of a nice orchestrator. Google had a bit of experience in this field. And They saw a nice opportunity to compete against AWS. Imagine, if the world adopts Kubernetes, which is what is happening. Then the barrier to exit AWS just became a lot cheaper. -It is not a secret that AWS was one of the last big tech compagny to join the CNCF. And I think it is because, kubernetes is a threat to their business model, to some extent. +It is not a secret that AWS was one of the last big tech compagny to join the CNCF. And it is probably because, kubernetes is a threat to their business model, to some extent. ## The last package manager? @@ -52,4 +52,4 @@ WordPress, the code is free software. Great you can install it on your php provi One component of Kubernetes is definitely to address that. To some extent, kubernetes, and/or tools around are becoming the standard package manager. Some popular proprietary vendors like SAP are now shipping their software as a kuberntes package. They tell their customers, just provide us a cluster, we take care of the rest. Even [OpenStack](https://github.com/openstack/openstack-helm) is shipped as a kubernetes package! -For all these reasons, I think that kubernetes is becoming The cloud API, and the OS of your infrastructure, and the package manager to deploy your FLOSS. \ No newline at end of file +For all these reasons, kubernetes is becoming The cloud API, and the OS of your infrastructure, and the package manager to deploy your FLOSS. \ No newline at end of file diff --git a/content/WhyKubernetes/_index.md b/content/WhyKubernetes/_index.md index cf6f47ead3d372832c5082c012a3dbea4e5e2d81..42e60e971f36a8fe0f8a521fb8d9d6ee9266961a 100644 --- a/content/WhyKubernetes/_index.md +++ b/content/WhyKubernetes/_index.md @@ -1,7 +1,7 @@ --- title: "Why Kubernetes" -pre: "3. " -weight: 3 +pre: "4. " +weight: 4 --- We have an apriori that the free software community doesn't really like kubernetes, so this section is about why it is a such a great platform for hosting free software. Maybe it is just because this community doesn't really know it, or maybe we are just plain wrong. @@ -11,7 +11,7 @@ should at least question your beliefs. Some people complain about it, and maybe - containers are not secured - kubernetes is developed by google - - it is really complexe + - it is really complex - it consumes too much resources - the network stack is crazy diff --git a/content/_index.md b/content/_index.md index 69b293bd7a6c0db779f4d39e2510eeb280911abc..5e8b7f0aa40dc0a25fcee61e2342a43e11636a28 100644 --- a/content/_index.md +++ b/content/_index.md @@ -12,7 +12,7 @@ Libre.sh is a kubernetes distribution aimed at hosting freesoftware for the peop - High density of services - Everything as code -## how it works +## How it works It is an opinionated but modular kubernetes distribution. We don't have a strong opinion about lower layers, but we want to collaborate on top. The aim of this distribution is to host free software for people and organisation at scale. @@ -24,11 +24,11 @@ We have one opinion on how to organize the cluster, is that, we namespace it by Then we curate a list of nice operators for the backing services (Think s3, postgres, redis, emails..). -We also need to build/advocate for low level operators for popular FLOSS projects. We already helped develop the official docker images on the v1, we now want to help develop this operators. +We also need to build/advocate for upstream operators for popular FLOSS projects. We already helped develop [some](https://github.com/RocketChat/Docker.Official.Image/commit/a951f488fb2a633fc89ad3048eb451aa05dc90ee) [official](https://github.com/nextcloud/docker/commit/8fa384bcd6619b9c19c5efbcdf7248d803e43727) [docker](https://github.com/matomo-org/docker/commit/e6538b90a4c7e7e3d6423d1e4740e674ee42eede) [images](https://github.com/idno/Known-Docker/commit/394e91c21d33914899dd2b0b211be2d7fe4e1837) on the v1, we now want to help develop this operators. -Then we wrap these operators as high level or libre.sh operators. These are the low level operators, packaged with the necessary dependencies to make them work out of the box in libre.sh. +Then we wrap these operators as libre.sh operators. These are the upstream operators, packaged with the necessary dependencies to make them work out of the box in libre.sh. -Finally, we build a nice UI to let end user self serve these great FLOSS tools. The objective would be to have an alpha version of this UI by beginning of 2021. +Finally, we want to build a nice UI to let end user self serve these great FLOSS tools. The objective would be to have an alpha version of this UI by beginning of 2021. This is the general idea of the libre.sh kubernetes distribution. This is early and work in progress, feel free to get in touch to discuss about the different points. @@ -49,4 +49,4 @@ If you need to build an infrastructure to host free software that would need to If you need high availability and you are not allergic to containers, even for one Nextcloud instance, it could be for you. -If you need to host hundreds of free software instances, like we do, it is also for you! +If you need to host hundreds of free software instances, like we do, it is definitely for you! diff --git a/content/contribute.md b/content/contribute.md new file mode 100644 index 0000000000000000000000000000000000000000..df7d0fc31c384d4e48d9cc6adf6232631f774929 --- /dev/null +++ b/content/contribute.md @@ -0,0 +1,33 @@ +--- +title: How to contribute +--- + +Depending on your skills, there are many ways to contribute: + + - devops + - improve docker images upstream + - build pipelines to test them and ship them + - build pipelines for our operators + - go developper + - develop operators upstream + - develop libre.sh operators + - make kubernetes ecosystem thrive + - UI/UX designer/developer + - help us shape what the UI will be like --> https://lab.libreho.st/libre.sh/kubernetes/ui + - translate + - not much yet, once we have the UI, it would make sense to translate it + - documentation + - improve this website + - spread the word about this tool + - write blog post + - tweet and toot about it + - discuss on reddit + - discuss with your community + - support + - support people on the forum + - support people over the matrix channel + - learn + - kubernetes + - go + - donate :) + - https://opencollective.com/libresh \ No newline at end of file diff --git a/content/credits.md b/content/credits.md new file mode 100644 index 0000000000000000000000000000000000000000..37358108eb7eac982e6f4c0dc1cdd89cfc6bb474 --- /dev/null +++ b/content/credits.md @@ -0,0 +1,11 @@ +We'd like to thanks the following that make building and hosting this website possible: + + - Elio Quoshi and https://ura.design for the beautiful logo they designed us. + - https://github.com/matcornic/hugo-theme-learn + - https://getgrav.org + - https://gohugo.io/ + - https://gitlab.com + - https://Kubernetes.io + - https://github.com/GoogleContainerTools/kaniko + - https://hub.docker.com + - https://indie.host \ No newline at end of file diff --git a/content/license.md b/content/license.md new file mode 100644 index 0000000000000000000000000000000000000000..e9526c68838bc5f7350af90e10403b832f456cf2 --- /dev/null +++ b/content/license.md @@ -0,0 +1,7 @@ +--- +title: License +--- + +In case you wondered, it is a free software project, not open source. This is a project about human rights, privacy rights, freedom of speech (in the european sense), not about efficient development. This wesbite is public domain and we use AGPL, [your compagny problably doesn't like](https://opensource.google/docs/using/agpl-policy/), and not MIT. We consider that the greatest freedom, shouldn't be a company freedom to be able to close the source code, but a user freedom to always have it free and libre. + +If you are aligned with these values, you are welcome to contribute. If you feel uncomfy, we are sorry, but this is not negociatable. \ No newline at end of file diff --git a/content/mentoring.md b/content/mentoring.md new file mode 100644 index 0000000000000000000000000000000000000000..ea02cecf60c69f64eaeabca2b0857c6ace6a8b5a --- /dev/null +++ b/content/mentoring.md @@ -0,0 +1,11 @@ +--- +title: Free mentoring +--- + +We believe in this project, and want to make it successful. + +If you are a free software enthousiast and would like to contribute to this project, in any way, feel free to reach us --> contact at indie dot host. + +We want to offer free mentoring to help you getting started with this project. + +We don't know yet which form it will take, but we'll learn it together. \ No newline at end of file diff --git a/content/roadmap.md b/content/roadmap.md new file mode 100644 index 0000000000000000000000000000000000000000..1e3f4fbd2a7374b3f2e6d9fbd71157ac62424ef1 --- /dev/null +++ b/content/roadmap.md @@ -0,0 +1,54 @@ +## Release management + +Let's first define what we call alpha, beta, and stable. + +### Alhpa + +Alpha is just a proof of concept. It works on my machine, and it is freshly shipped. +Use it at your own risk. + +### Beta + + - It is deployed in production for some bold people + - There is some rough documentation + - Most bugs are corrected + - There is an upgrade path + - There are backups and restore + +### Stable + + - It is observed + - grafana dashboard + - prometheus metrics + - prometheus alerts + - The documentation is nice + - it is deployed in production for more than a dozen of people + +## Roadmap + + - 1st of February libre.sh full stack alpha + - terraform for hetzner cloud + - nextcloud libre.sh operator + - editoria libre.sh operator + - proposed release name - Louise Michel + - 1st of May + - graduate nextcloud libre.sh operator to Beta + - graduate editoria libre.sh operator to Beta + - graduate the documentation of libre.sh to Beta + - Have some user stories written for the UI + - Find a decision for the UI - is it called libre.sh UI or is it called sook? + - rocketchat libre.sh operator alpha + - discourse libre.sh operator alpha + - codimd libre.sh operator alpha + - proposed release name - Proudhon + - 1st of August + - graduate nextcloud libre.sh operator to stable + - graduate editoria libre.sh operator to stable + - graduate the documentation of libre.sh to stable + - graduate rocketchat libre.sh operator to beta + - graduate discourse libre.sh operator to beta + - graduate codimd libre.sh operator to beta + - have some wireframe mockups for the UI + - proposed release name - Voltairine de Cleyre + - 1st of November + - proposed release name - Bakunin (you get the pattern ;) ) \ No newline at end of file diff --git a/k8s.yml b/k8s.yml new file mode 100644 index 0000000000000000000000000000000000000000..2cc79f274c062b00db156d3eb4d6c51121b02394 --- /dev/null +++ b/k8s.yml @@ -0,0 +1,57 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: libresh +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - env: + image: indiepaas/website:latest + imagePullPolicy: Always + name: libresh + ports: + - containerPort: 80 +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + kubernetes.io/tls-acme: "true" + certmanager.k8s.io/cluster-issuer: letsencrypt-prod + name: libre-sh + namespace: libre-sh +spec: + rules: + - host: libresh.test.indie.host + http: + paths: + - backend: + serviceName: libresh-web + servicePort: http + path: / + tls: + - hosts: + - libresh.test.indie.host + secretName: libresh-tls +--- +apiVersion: v1 +kind: Service +metadata: + name: libresh-web + namespace: libre-sh +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx \ No newline at end of file diff --git a/layouts/partials/logo.html b/layouts/partials/logo.html new file mode 100644 index 0000000000000000000000000000000000000000..6509cf7bbc7720cc72ca3f453562c710e4eadc8c --- /dev/null +++ b/layouts/partials/logo.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/layouts/partials/menu-footer.html b/layouts/partials/menu-footer.html new file mode 100644 index 0000000000000000000000000000000000000000..df1f10318d6590a35fd763bda825517cd245a2ae --- /dev/null +++ b/layouts/partials/menu-footer.html @@ -0,0 +1,7 @@ +

Sponsors

+ + +Ura is a digital studio which focuses on visual communication solutions tailored for Open Source and Internet Freedom projects. + +

+

Built with from Grav and Hugo

\ No newline at end of file diff --git a/static/images/favicon.png b/static/images/favicon.png new file mode 100755 index 0000000000000000000000000000000000000000..ecadbe1bd68444f0ce081a0dd2f2e7e2197dfd88 Binary files /dev/null and b/static/images/favicon.png differ diff --git a/static/images/logo.png b/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..89dc6ada61273e898c116ca5ed959d8cacf8ea28 Binary files /dev/null and b/static/images/logo.png differ diff --git a/static/images/ura.svg b/static/images/ura.svg new file mode 100644 index 0000000000000000000000000000000000000000..a1f3f904801162dc3c15e97aee38c82cccfa6929 --- /dev/null +++ b/static/images/ura.svg @@ -0,0 +1 @@ +logo \ No newline at end of file diff --git a/static/images/webca.png b/static/images/webca.png new file mode 100644 index 0000000000000000000000000000000000000000..52773f3aa026fe0e3114d9a76766176c18419f50 Binary files /dev/null and b/static/images/webca.png differ