Skip to content

Commit 0deb782

Browse files
author
Eric Stroczynski
authored
doc/proposals: move proposals from openshift-* directories (#2412)
1 parent f5f80cb commit 0deb782

File tree

6 files changed

+65
-65
lines changed

6 files changed

+65
-65
lines changed

doc/proposals/openshift-4.4/ansible-operator-devex.md renamed to doc/proposals/ansible-operator-devex.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ superseded-by: []
2828
## Open Questions (optional)
2929

3030
This is where to call out areas of the design that require closure before deciding
31-
to implement the design. For instance,
31+
to implement the design. For instance,
3232
> 1. This requires exposing previously private resources which contain sensitive
33-
information. Can we do this?
33+
information. Can we do this?
3434

3535
## Summary
3636

@@ -58,7 +58,7 @@ Kubernetes/OpenShift API inconsistencies or operator-sdk bugs/behaviors.
5858
2. Update Ansible scaffolding, test scenarios, and examples to make use of newer
5959
Ansible features and best practices, including support for collections and
6060
simpler and more flexible test scenarios.
61-
3. Readable logs without additional dependencies, and ideally without a sidecar
61+
3. Readable logs without additional dependencies, and ideally without a sidecar
6262
container.
6363

6464
### Non-Goals
@@ -80,7 +80,7 @@ This is where we get down to the nitty gritty of what the proposal actually is.
8080
#### Story 1 - Use operator-sdk up local to run the Ansible-based Operator
8181

8282
As a user, I would like to be able to run `operator-sdk up local` to run my
83-
Ansible-based Operator without requiring additional work or options. Although
83+
Ansible-based Operator without requiring additional work or options. Although
8484
it is currently possible to use `up local`, there are a variety of limitations
8585
that make the experience inferior to deploying the operator to a real cluster.
8686

@@ -93,7 +93,7 @@ that make the experience inferior to deploying the operator to a real cluster.
9393

9494
#### Story 2 - Use the molecule scenarios to test in a variety of environments
9595

96-
As a user, I would like to be able to use the scaffolded molecule scenarios to
96+
As a user, I would like to be able to use the scaffolded molecule scenarios to
9797
run the same set of tests against Kubernetes clusters in the following scenarios:
9898

9999
1. An ephemeral cluster provisioned by molecule
@@ -109,7 +109,7 @@ As a user, if there are issues in the way the proxy/cache handles a certain reso
109109
I should be able to work around those issues without needing to wait for bugfixes or
110110
features in the operator-sdk, by preventing those resources from being passed through
111111
the cache at all. For example, if I need to access an OpenShift Project resource (which
112-
is not cacheable, because it is not watchable), I should be able to specify that the
112+
is not cacheable, because it is not watchable), I should be able to specify that the
113113
Project resource skips the cache in my watches.yaml.
114114

115115

@@ -132,7 +132,7 @@ marginally higher maintenance burden when changing Ansible versions.
132132

133133
### Test Plan
134134

135-
1. We will add at least one test for each molecule scenario (when possible).
135+
1. We will add at least one test for each molecule scenario (when possible).
136136
1. We will add tests that make Ansible emit messages of each type that it supports,
137137
to help ensure that we can easily catch changes to the messag format.
138138
1. We will add a test scenario that uses `up local`.
@@ -162,4 +162,4 @@ None
162162

163163
None
164164

165-
[operator-sdk-doc]: ../../../doc
165+
[operator-sdk-doc]: ../../doc

doc/proposals/openshift-4.4/kubebuilder-integration.md renamed to doc/proposals/kubebuilder-integration.md

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -29,39 +29,39 @@ superseded-by: []
2929

3030
## Summary
3131

32-
The Operator SDK should become compatible with Kubebuilder so that it has the
33-
same project layout and CLI workflow for developing Go operators.
34-
To achieve this goal without duplicating upstream code, the SDK should integrate
35-
Kubebuilder’s CLI to reuse the scaffolding for project creation and lifecycle management.
36-
At the same time the SDK should still be able to provide SDK specific features that work
32+
The Operator SDK should become compatible with Kubebuilder so that it has the
33+
same project layout and CLI workflow for developing Go operators.
34+
To achieve this goal without duplicating upstream code, the SDK should integrate
35+
Kubebuilder’s CLI to reuse the scaffolding for project creation and lifecycle management.
36+
At the same time the SDK should still be able to provide SDK specific features that work
3737
with the new project layout.
3838

39-
In order for the SDK to wrap and reuse Kubebuilder while still maintaining the
40-
SDK binary as the entrypoint, Kubebuilder should be extended with a CLI interface
41-
that supports registering plugins. This lets the SDK reuse Kubebuilder’s existing
42-
scaffolding code for Go operators, while still being able to extend the CLI for SDK
43-
specific features/sub-commands and provide custom plugins that will allow the SDK to
39+
In order for the SDK to wrap and reuse Kubebuilder while still maintaining the
40+
SDK binary as the entrypoint, Kubebuilder should be extended with a CLI interface
41+
that supports registering plugins. This lets the SDK reuse Kubebuilder’s existing
42+
scaffolding code for Go operators, while still being able to extend the CLI for SDK
43+
specific features/sub-commands and provide custom plugins that will allow the SDK to
4444
scaffold different project types like Helm/Ansible in the future.
4545

4646

4747
## Motivation
4848

49-
The Operator SDK and Kubebuilder largely provide the same experience for developing
49+
The Operator SDK and Kubebuilder largely provide the same experience for developing
5050
Go operators since both projects defer to APIs provided by the same upstream projects.
51-
The two projects differentiate in their CLI and UX of project setup, layout, and
52-
lifecycle management. These differences are largely incidental of how the two
53-
projects developed over time and not due to any use cases that are only addressed by either UX.
54-
55-
By adopting the same workflow and layout as Kubebuilder, the SDK gains better
56-
alignment with the upstream community for writing Go operators. This allows the
57-
SDK to be used interchangeably with Kubebuilder projects, which unifies the
58-
experience of writing Go operators and resolves confusion on why the Operator SDK
59-
and Kubebuilder differ in their UX to achieve the same goals. This lets the SDK
60-
focus more on features that are outside the scope of Kubebuilder, such as
51+
The two projects differentiate in their CLI and UX of project setup, layout, and
52+
lifecycle management. These differences are largely incidental of how the two
53+
projects developed over time and not due to any use cases that are only addressed by either UX.
54+
55+
By adopting the same workflow and layout as Kubebuilder, the SDK gains better
56+
alignment with the upstream community for writing Go operators. This allows the
57+
SDK to be used interchangeably with Kubebuilder projects, which unifies the
58+
experience of writing Go operators and resolves confusion on why the Operator SDK
59+
and Kubebuilder differ in their UX to achieve the same goals. This lets the SDK
60+
focus more on features that are outside the scope of Kubebuilder, such as
6161
Operator Lifecycle Manager (OLM) integration and Scorecard.
6262

63-
Reusing the project scaffolding from Kubebuilder also reduces duplication in
64-
the SDK. This frees up Operator SDK maintainers to focus more on collaborating
63+
Reusing the project scaffolding from Kubebuilder also reduces duplication in
64+
the SDK. This frees up Operator SDK maintainers to focus more on collaborating
6565
with the Kubebuilder maintainers on the upstream controller-runtime and controller-tools projects
6666

6767

@@ -87,20 +87,20 @@ with the Kubebuilder maintainers on the upstream controller-runtime and controll
8787

8888
#### Story 1 - Design a Kubebuilder plugin interface that lets the SDK reuse and extend the CLI
8989

90-
After upstream discussions with the Kubebuilder maintainers there is consensus
91-
that Kubebuilder should support an interface to register plugins that would be
92-
used to provide the implementation of CLI commands. This way Kubebuilder would
93-
not have to directly expose its [cobra][cobra] CLI for the SDK’s consumption, and the SDK
94-
could still reuse Kubebuilder’s plugins to scaffold new projects (init and create)
95-
while also being able to register its own plugins to extend the CLI for SDK specific
90+
After upstream discussions with the Kubebuilder maintainers there is consensus
91+
that Kubebuilder should support an interface to register plugins that would be
92+
used to provide the implementation of CLI commands. This way Kubebuilder would
93+
not have to directly expose its [cobra][cobra] CLI for the SDK’s consumption, and the SDK
94+
could still reuse Kubebuilder’s plugins to scaffold new projects (init and create)
95+
while also being able to register its own plugins to extend the CLI for SDK specific
9696
subcommands (csv-gen, scorecard).
9797

98-
This plugin interface should also allow the SDK to provide custom plugin
99-
implementations for the init and create subcommands so that it can customize the
98+
This plugin interface should also allow the SDK to provide custom plugin
99+
implementations for the init and create subcommands so that it can customize the
100100
scaffolding of Helm and Ansible projects in the future.
101101

102-
There is a [proposal][plugin-proposal] on Kubebuilder for the design of such a plugin interface.
103-
The aim of this story is to address all reviewer comments to achieve consensus
102+
There is a [proposal][plugin-proposal] on Kubebuilder for the design of such a plugin interface.
103+
The aim of this story is to address all reviewer comments to achieve consensus
104104
on the plugin architecture and merge the proposal.
105105

106106
[plugin-proposal]: https://github.com/kubernetes-sigs/kubebuilder/pull/1250
@@ -109,27 +109,27 @@ on the plugin architecture and merge the proposal.
109109

110110
#### Story 2 - Implement the Kubebuilder plugin interface and CLI pkg
111111

112-
After the plugin interface proposal has been accepted, the implementations of
112+
After the plugin interface proposal has been accepted, the implementations of
113113
the plugin interface and the CLI pkg should be added to Kubebuilder.
114114

115-
This involves writing plugin implementations for the following scaffolding
115+
This involves writing plugin implementations for the following scaffolding
116116
subcommands in Kubebuilder so that the SDK can register them for reuse in its own CLI:
117117

118118
- `kubebuilder init`
119119
- `kubebuilder create api`
120120
- `kubebuilder create webhook`
121121

122-
The goal of this story is to ensure a release of Kubebuilder that supports the
122+
The goal of this story is to ensure a release of Kubebuilder that supports the
123123
new plugin interface that the SDK can integrate downstream into its own CLI.
124124

125125

126126
#### Story 3 - Integrate the Kubebuilder CLI into the SDK CLI to achieve the same workflow and project layout for Go operators
127127

128-
Once Kubebuilder supports plugin registration, the SDK CLI should be modified
129-
to reuse Kubebuilder’s CLI and plugins so that the SDK workflow for developing
128+
Once Kubebuilder supports plugin registration, the SDK CLI should be modified
129+
to reuse Kubebuilder’s CLI and plugins so that the SDK workflow for developing
130130
Go operators is identical to Kubebuilder’s workflow.
131131

132-
Project initialization and api/webhook scaffolding would be provided by the
132+
Project initialization and api/webhook scaffolding would be provided by the
133133
upstream Kubebuilder CLI and plugins:
134134

135135

@@ -144,42 +144,42 @@ Other SDK subcommands can be removed and replaced by their equivalent Makefile t
144144
- `operator-sdk build` ==> `make manager`, `make docker-build`
145145
- `operator-sdk up local` ==> `make run`
146146

147-
If any of the old subcommands above are invoked for a Go operator project, the
148-
output should be a deprecation error that highlights the equivalent replacement
147+
If any of the old subcommands above are invoked for a Go operator project, the
148+
output should be a deprecation error that highlights the equivalent replacement
149149
for it in the new Kubebuilder workflow.
150150

151151

152152
#### Story 4 - Update the SDK specific features and subcommands to work with the new project layout
153153

154-
Since features like the scorecard, CSV generation and test-framework have no
154+
Since features like the scorecard, CSV generation and test-framework have no
155155
equivalent in the Kubebuilder workflow, those subcommands would be unchanged on the CLI.
156156

157157
- `operator-sdk gen-csv`
158158
- `operator-sdk scorecard`
159159
- `operator-sdk test`
160-
161-
Where necessary the above commands should be adjusted to reflect the changes to
160+
161+
Where necessary the above commands should be adjusted to reflect the changes to
162162
their expected input and output manifest paths that is consistent with the new project layout.
163163

164164

165165
#### Story 5 - Update the Operator SDK e2e tests to work with the new project layout
166166

167-
The existing e2e tests and CI scripts for testing Go operators would need to be
167+
The existing e2e tests and CI scripts for testing Go operators would need to be
168168
updated to use the new layout so that CI passes for the new CLI workflow in the master branch.
169169

170170

171171
#### Story 6 - Update the Go operator related documentation per the Kubebuilder workflow and project layout
172172

173-
The user documentation for Go operators such as the user-guide, CLI reference,
173+
The user documentation for Go operators such as the user-guide, CLI reference,
174174
project layout, etc will need to be updated according to the new CLI and layout.
175175

176176

177177
### Implementation Details/Notes/Constraints
178-
The integration work for the Go Operator CLI workflow can be done in the master
178+
The integration work for the Go Operator CLI workflow can be done in the master
179179
branch to avoid issues with merge conflicts from rebasing a separate branch at a later time.
180-
The new CLI can be worked on behind a hidden subcommand, `operator-sdk alpha`, until it is ready to
181-
replace the existing workflow. This would help avoid exposing it too early while
182-
still providing the ability to test it on the master branch.
180+
The new CLI can be worked on behind a hidden subcommand, `operator-sdk alpha`, until it is ready to
181+
replace the existing workflow. This would help avoid exposing it too early while
182+
still providing the ability to test it on the master branch.
183183

184184

185185
### Risks and Mitigations
@@ -190,4 +190,4 @@ still providing the ability to test it on the master branch.
190190
- With the proposed plugin architecture it should be possible to update the workflow for Helm/Ansible operators to be the same as Kubebuilder. However that is not currently in scope for this proposal.
191191

192192

193-
[operator-sdk-doc]: ../../../doc
193+
[operator-sdk-doc]: ../../doc

doc/proposals/openshift-4.4/kubernetes-1.17.md renamed to doc/proposals/kubernetes-1.17.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ History`.
120120

121121
The only drawback is the potential for breaking changes in client code due to breaking
122122
changes introduced by the Kubernetes 1.17 version update. However, this is unavoidable
123-
since Kubernetes minor versions almost always contain breaking changes that impact
123+
since Kubernetes minor versions almost always contain breaking changes that impact
124124
controller-runtime and Operator SDK.
125125

126126
## Alternatives
@@ -131,6 +131,6 @@ None
131131

132132
N/A
133133

134-
[operator-sdk-doc]: ../../../doc
134+
[operator-sdk-doc]: ../../doc
135135
[controller-runtime]: https://github.com/kubernetes-sigs/controller-runtime
136136
[helm]: https://github.com/helm/helm

doc/proposals/openshift-4.4/tech-debt.md renamed to doc/proposals/tech-debt.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ be enabled in CI.
8080

8181
#### Story 2 - Instrument unit tests with code coverage
8282

83-
Test coverage will be tracked by running unit tests with code coverage enabled and
83+
Test coverage will be tracked by running unit tests with code coverage enabled and
8484
submitting results to coveralls.io during CI. This integration will highlight code
8585
coverage improvements or regressions in each PR, which will incentivize contributors
8686
and reviewers to improve code coverage over time.
@@ -107,7 +107,7 @@ directly.
107107
### Risks and Mitigations
108108

109109
Only risk is that deprecation of `generate openapi` will break a small subset of SDK
110-
users. The mitigation is that the SDK will include instructions for running code
110+
users. The mitigation is that the SDK will include instructions for running code
111111
generation tools directly, which will be a 1-to-1 replacement of the deprecated
112112
functionality in Operator SDK.
113113

@@ -116,7 +116,7 @@ functionality in Operator SDK.
116116
### Test Plan
117117

118118
All unit tests will gain coverage metrics, which will increase visibility on the areas
119-
of the codebase that do not have adequete testing.
119+
of the codebase that do not have adequete testing.
120120

121121
The `generate` subcommand changes will also result in refactored unit and e2e tests,
122122
which will no longer need to check for the existence of generated Go OpenAPI code.
@@ -150,4 +150,4 @@ None
150150

151151
None
152152

153-
[operator-sdk-doc]: ../../../doc
153+
[operator-sdk-doc]: ../../doc

0 commit comments

Comments
 (0)