arc/docs/communishift/index.rst

102 lines
3.1 KiB
ReStructuredText
Raw Permalink Normal View History

2022-06-14 12:05:06 -03:00
Communishift
============
Purpose
-------
2022-06-14 12:05:06 -03:00
Investigate what is needed in order to run a community focused Openshift instance.
Identify possible bottlenecks, issues and whatever the CPE team needs to develop new
components/services for this new Openshift instance.
Resources
---------
2022-06-14 12:05:06 -03:00
- https://docs.openshift.com/dedicated/storage/persistent_storage/osd-persistent-storage-aws.html
- https://docs.openshift.com/container-platform/4.6/applications/quotas/quotas-setting-per-project.html
2022-06-14 12:05:06 -03:00
Investigation
-------------
2022-06-14 12:05:06 -03:00
The team discussed the following topics:
.. toctree::
:maxdepth: 1
authentication
resource-quota
storage
Conclusions
-----------
2022-06-14 12:05:06 -03:00
- The cluster can leverage EFS to provision volumes (using the AWS EFS operator from the
Operator Marketplace) and an extra ansible playbook to automate part of the process;
- Quotas can be enforced by creating an Openshift operator that watches all user
namespaces;
- Authentication groups can be automatically synched between FasJSON and Openshift with
a new Operator.
2022-06-14 12:05:06 -03:00
Proposed Roadmap
----------------
2022-06-14 12:05:06 -03:00
AWS EFS Ansible Playbook
~~~~~~~~~~~~~~~~~~~~~~~~
One needs to provide some AWS info when creating a volume using the EFS operator, sample
resource bellow:
2022-06-14 12:05:06 -03:00
.. code-block::
2022-06-14 12:05:06 -03:00
apiVersion: aws-efs.managed.openshift.io/v1alpha1
kind: SharedVolume
metadata:
name: sv1
namespace: default
spec:
accessPointID: fsap-0123456789abcdef
fileSystemID: fs-0123cdef
2022-06-14 12:05:06 -03:00
Both "accessPointID and fileSystemID" are generated by AWS with "accessPointID" being
generated for every PVC that gets provisioned in the cluster.
2022-06-14 12:05:06 -03:00
An ansible playbook comes into play to automate the process of creating an "accessPoint"
for a namespace whichs should be request in an infra ticket when requesting the creation
of a new namespace in the cluster.
2022-06-14 12:05:06 -03:00
Fedora Cloud Quota Operator
~~~~~~~~~~~~~~~~~~~~~~~~~~~
2022-06-14 12:05:06 -03:00
An operator can be created to ensure a namespace's resource quota.
The operator would watch for namespaces with specific tags/annotations (TBD) and apply
the required quotas in those namespaces.
2022-06-14 12:05:06 -03:00
The quotas themselves are applied by creating a `ResourceQuota` object in the namespace
is supposed to manage:
https://docs.openshift.com/container-platform/4.6/applications/quotas/quotas-setting-per-project.html.
2022-06-14 12:05:06 -03:00
Fedora FasJSON Sync Operator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2022-06-14 12:05:06 -03:00
An operator can be used to ensure FasJSON groups are synched with the cluster groups
used by Openshift roles.
2022-06-14 12:05:06 -03:00
This operator would retrieve a group(s) information every N seconds from FasJSON and
apply the changes in the cluster, ensuring syncrhonization between the two systems.
2022-06-14 12:05:06 -03:00
Food for thought: it would be interesting if FasJSON notifies group changes to
fedora-messaging.
2022-06-14 12:05:06 -03:00
Team and Skills
---------------
2022-06-14 12:05:06 -03:00
A team of three indivduals should be able to deliver the proposed roadmap in ~6 weeks (2
week sprint, a sprint per component) assuming the following technical skills:
2022-06-14 12:05:06 -03:00
- Kubernetes basic concepts/usage; * API or previous operator knowledge is a plus;
- Ansible basic usage; * AWS API knowledge is a plus.
2022-06-14 12:05:06 -03:00
It might be a good opportunity to learn about Kubernetes and Operator/Controller
development.