Skip to content

Commit 7c480f4

Browse files
committed
[Bucket API] minor updates to wording/formatting
1 parent 0a31cd5 commit 7c480f4

File tree

1 file changed

+16
-19
lines changed
  • keps/sig-storage/1979-object-storage-support

1 file changed

+16
-19
lines changed

keps/sig-storage/1979-object-storage-support/README.md

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ Since this is an entirely new feature, it is possible to implement this complete
141141
- COSI Sidecar
142142
- COSI Driver
143143

144-
1. The COSI ControllerManager is the central controller that validates, authorizes and binds COSI created buckets to BucketClaims. At least one active instance of ControllerManager should be present.
144+
1. The COSI ControllerManager is the central controller that validates, authorizes and binds COSI created buckets to BucketClaims. Only one active instance of ControllerManager should be present.
145145
2. The COSI Sidecar is the point of integration between COSI and drivers. All operations that require communication with the OSP is triggered by the Sidecar using gRPC calls to the driver. One active instance of Sidecar should be present **for each driver**.
146146
3. The COSI driver communicates with the OSP to conduct Bucket related operations.
147147

@@ -190,8 +190,8 @@ The BucketClaim is a claim to create a new Bucket. This resource can be used to
190190
| metadata: | | deletionPolicy: delete |
191191
| namespace: ns1 | | driverName: s3.amazonaws.com |
192192
| spec: | | parameters: |
193-
| bucketClassName: bc1 | | key: value |
194-
| protocols: | |--------------------------------|
193+
| bucketClassName: bc1 | | key: value |
194+
| protocols: | |--------------------------------|
195195
| - s3 |
196196
|------------------------------|
197197
@@ -513,8 +513,6 @@ Similar to the BucketAccess for COSI created bucket, this BucketAccess should re
513513
|-------------------------------|
514514
```
515515

516-
Note that, as of the alpha version of COSI, there is no authorization mechanism to restrict users who can refer to buckets imported into COSI. In the future, access to imported buckets will also follow the namespace selector approach described [above](#sharing-buckets).
517-
518516
## Bucket deletion
519517

520518
- A Bucket created by COSI as a result of a BucketClaim can deleted by deleting the BucketClaim
@@ -543,7 +541,7 @@ If a Bucket is manually deleted by an admin, then a finalizer on the Bucket prev
543541

544542
Self service is easily possible with the current design as both the BucketRequest and BucketClaim resources are namespace scoped, and users need not have admin privileges to create, modify and delete them.
545543

546-
The only admin steps are creation of class objects(BucketClass, BucketAccessClass) and Bucket imports. The creatio of class object is no different from requiring a StorageClass for provisioning PVCs. It is a well-understood pattern among kubernetes users. Importing a Bucket requires special permissions because its lifecycle is not managed by COSI, and special care needs to be taken to prevent clones, accidental deletions and other mishaps (for instance, setting the deletion policy to Delete).
544+
The only admin steps are creation of class objects(BucketClass, BucketAccessClass) and Bucket imports. The creation of a class object is no different from requiring a StorageClass for provisioning PVCs. It is a well-understood pattern among Kubernetes users. Importing a Bucket requires special permissions because its lifecycle is not managed by COSI, and special care needs to be taken to prevent clones, accidental deletions and other mishaps (for instance, setting the deletion policy to Delete).
547545

548546
## Mutating Buckets
549547

@@ -580,7 +578,7 @@ Notes:
580578

581579
Resource to represent a Bucket in OSP. Buckets are cluster-scoped.
582580

583-
```yaml
581+
```go
584582
Bucket {
585583
TypeMeta
586584
ObjectMeta
@@ -641,7 +639,7 @@ Bucket {
641639

642640
A claim to create Bucket. BucketClaim is namespace-scoped
643641

644-
```yaml
642+
```go
645643
BucketClaim {
646644
TypeMeta
647645
ObjectMeta
@@ -680,7 +678,7 @@ BucketClaim {
680678
681679
Resouce for configuring common properties for multiple Buckets. BucketClass is cluster-scoped.
682680
683-
```yaml
681+
```go
684682
BucketClass {
685683
TypeMeta
686684
ObjectMeta
@@ -706,14 +704,13 @@ BucketClass {
706704
707705
A resource to access a Bucket. BucketAccess is namespace-scoped
708706
709-
```yaml
707+
```go
710708
BucketAccess {
711709
TypeMeta
712710
ObjectMeta
713711

714712
Spec BucketAccessSpec {
715713
// BucketClaimName is the name of the BucketClaim.
716-
// Exactly one of BucketClaimName or BucketName must be set.
717714
BucketClaimName string
718715

719716
// Protocol is the name of the Protocol
@@ -735,7 +732,8 @@ BucketAccess {
735732

736733
// ServiceAccountName is the name of the serviceAccount that COSI will map
737734
// to the OSP service account when IAM styled authentication is specified
738-
ServiceAccountName string
735+
// +optional
736+
ServiceAccountName string
739737
}
740738

741739
Status BucketAccessStatus {
@@ -751,9 +749,9 @@ BucketAccess {
751749
752750
## BucketAccessClass
753751
754-
Resoruce for configuring common properties for multiple BucketClaims. BucketAccessClass is a clustered resource
752+
Resource for configuring common properties for multiple BucketClaims. BucketAccessClass is a clustered resource
755753
756-
```yaml
754+
```go
757755
BucketAccessClass {
758756
TypeMeta
759757
ObjectMeta
@@ -779,7 +777,7 @@ BucketAccessClass {
779777
780778
Resource mounted into pods containing information for applications to gain access to buckets.
781779
782-
```yaml
780+
```go
783781
BucketInfo {
784782
TypeMeta
785783
ObjectMeta
@@ -855,7 +853,7 @@ The returned `bucketID` should be a unique identifier for the bucket in the OSP.
855853
856854
#### DriverGrantBucketAccess
857855
858-
This gRPC call creates a set of access credentials for a bucket. This api must be idempotent. The input to this call is the id of the bucket, a set of opaque parameters and name of the account. This `accountName` field is used to ensure that multiple requests for the same BucketClaim do not result in multiple credentials.
856+
This gRPC call creates a set of access credentials for a bucket. This api must be idempotent. The input to this call is the id of the bucket, a set of opaque parameters and name of the account. This `accountName` field is the concatenation of the characters ba (short for BucketAccess) and its UID. It is used as the idempotency key for requests to the drivers regarding a particular BA.
859857
860858
The returned `accountID` should be a unique identifier for the account in the OSP. This value could be the name of the account too. This value will be included in all subsequent calls to the driver for changes to the BucketAccess.
861859
@@ -921,6 +919,7 @@ This gRPC call revokes access granted to a particular account.
921919
- Develop unit test cases to demonstrate that the above mentioned use cases work correctly
922920
923921
## Alpha -\> Beta
922+
- Consider using a typed configuration for Bucket properties (parameter fields in Bucket, BucketClass, BucketAccess, BucketAccessClass)
924923
- Implement all COSI components to support agreed design.
925924
- Design and implement support for sharing buckets across namespaces.
926925
- Design and implement quotas/restrictions for Buckets and BucketAccess.
@@ -1209,13 +1208,11 @@ Yes, the following cluster scoped resources
12091208
12101209
- Bucket
12111210
- BucketClass
1212-
- BucketAccess
12131211
- BucketAccessClass
12141212
12151213
and the following namespaced scoped resources
12161214
1217-
- BucketRequest
1218-
- BucketAccessRequest
1215+
- BucketAccess
12191216
12201217
###### Will enabling / using this feature result in any new calls to the cloud provider?
12211218

0 commit comments

Comments
 (0)