Ceph iSCSI Gateway with Operator Framework¶
The aim of this piece of work is to produce an Ceph iSCSI Gateway charm written in the operator framework.
Problem Description¶
There is currently no charmed mechanism for providing Ceph backed block devices to clients which cannot mount rbd devices directly. In addition a new charm framework is under development and this charm is an opportunity to test it for writing OpenStack charms.
Proposed Change¶
To write a ceph-iscsi charm using the operator framework. The charm will be marked as a preview charm but should have functional equivalence with a corresponding OpenStack charm written using the reactive framework.
The ceph-iscsi charm should interact with the Juju environment via the operator framework. This means that calls to libraries like charmhelpers.core.hookenv should be avoided. This applies to all aspects of the charm including interfaces.
What versions of the operating system are affected or required? Focal or Bionic + HWE Kernel
What version of Juju is required? 2.7+
Alternatives¶
Write the charm using classic or reactive framework.
Implementation¶
Assignee(s)¶
- Primary assignee:
Liam Young <lp:gnuoy>
Gerrit Topic¶
Use Gerrit topic “<topic_name>” for all patches related to this spec.
git-review -t ceph-iscsi
Work Items¶
The implementation consists of the following items:
Validate that Ubuntu ceph-iscsi packages are working on Focal
Plan charm interfaces, supporting modules etc
Decide how dependencies are to be handled (pip, git submodulees etc)
Decide on how framework and dependency versions will be pinned during development and upon release.
Write basic charm to deploy and configure gateway services.
Write functional tests to perform a multipath mount a iscsi volume.
Write README
Certificates interface
Security checklist
Add pause & resume
Implement ceph-iscsi api security (admin_password, trusted_ips etc)
zaza tests for creating nd mounting a target, doing basic i/o and initiator reconnect testing.
Add iscsi target create action
Ensure update statue detects missing or incomplete relations.
Add series upgrade
Repositories¶
This will almost certainly change but:
Documentation¶
Any additional documentation will be considered for charm-deployment-guide.
Security¶
The gateway api will be secured with a password and access limited to the IP addresses of the other gateways.
The certificates interface will also be implemented to encrypt the api endpoint.
Testing¶
The charm will have the standard lint, unit and functional tests. The functional tests will be written in zaza.
Dependencies¶
The operator framework having sufficient maturity.
A way to reuse existing code is identified. It would probably be unacceptable to add a third version of common functions.