Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prototype 3: API Author Demo #417

Closed
13 of 18 tasks
pweil- opened this issue Feb 3, 2022 · 6 comments
Closed
13 of 18 tasks

Prototype 3: API Author Demo #417

pweil- opened this issue Feb 3, 2022 · 6 comments
Assignees
Labels
epic Represents a larger feature with multiple stories kind/feature Categorizes issue or PR as related to a new feature. milestone-blocker Blocks closing out a milestone
Milestone

Comments

@pweil-
Copy link
Member

pweil- commented Feb 3, 2022

Demo Objective

Close over consumer details, evolve APIs

  1. For ingress (shouldn’t ingress have a wildcard?)
  2. For serving (reencrypt)
  3. For talking to another service

Demo Steps

  1. Create new workspace for our new cert-manager API backend
  2. Run cert-manager (as Deployment if possible, locally is also fine because not focus of this epic) with a kubeconfig of a kcp controller workspace.
  3. Export the cert-manager APIs (those needed to issue a serving cert)
  4. In another workspace, import the cert-manager APIs from above
  5. Show webapp getting a certificate within the workspace
  6. Stetch goal: A compatible API schema change is deployed
  7. Stetch goal: See the workspaces to see the new schema automatically

Action Items

Design Details

API types

Create concrete API types following the sketches in https://docs.google.com/document/d/1k72fgGBNJzbY1Rkxj9_1WksHZR0cNT5OeadCpWuc-zM/edit:

  • APIExport
  • APIBinding
  • APIResourceSchema

APIExportController

APIBindingController

  • TODO

apiextensions updates

  • Remove inheritFrom logic
  • When listing/getting CRDs, combine what's in the current logical cluster with all CRDs associated with all APIBindings for the current workspace
  • Deny creation of a CRD in a workspace if the same GVR exists coming from any APIBindings

APIExport virtual apiserver

@pweil- pweil- added the kind/feature Categorizes issue or PR as related to a new feature. label Feb 3, 2022
@pweil- pweil- added this to the prototype3 milestone Feb 3, 2022
@pweil- pweil- added this to kcp Feb 3, 2022
@pweil- pweil- moved this to Backlog in kcp Feb 3, 2022
@pweil-
Copy link
Member Author

pweil- commented Feb 3, 2022

Notes from discussion:

evolve APIS

User can A) add a new api, b) deliver a forward compatible change to an existing api export

After this demo, a consumer who leverages these mechanisms will then be a source of input to the "api evolution" epic with additional requirements (i have people using it, i need a non forward change, and i want to do side by side of old api and new api)

@sttts
Copy link
Member

sttts commented Feb 10, 2022

Updated the steps:

  • no app deployment
  • new step with schema update

@fabianvf
Copy link
Contributor

We've been working on making cert-manager multi-cluster aware, if anyone else is working on this issue feel free to reach out (fabianvf on kubernetes slack)

@ncdc
Copy link
Member

ncdc commented Feb 24, 2022

@sttts I updated the description with more details & design info. PTAL. Can you clarify what "APIImport admission" and "APIDeployment controller" are?

@ncdc ncdc mentioned this issue Mar 1, 2022
2 tasks
@ncdc ncdc added epic Represents a larger feature with multiple stories milestone-blocker Blocks closing out a milestone in-progress labels Mar 1, 2022
@ncdc ncdc moved this from Backlog to In Progress in kcp Mar 14, 2022
@sttts sttts removed the in-progress label Mar 14, 2022
@ncdc
Copy link
Member

ncdc commented Mar 18, 2022

Status update:

  • APIBinding admission is merged apibinding: add admission #653
  • WIP: Add APIBinding controller, replace inheritFrom with APIBindings #702 replaces clusterWorkspace.spec.inheritFrom entirely with APIBinding-based extensions
    • The implementation is mostly done. We probably can make changes in follow-up PRs
      • 1 thing that isn't finished / correct is setting the storage versions in the APIBinding's status
    • Not sure on the conditions & reasons I added. Could use a review. Some implementation details probably leak a bit too much.
    • Unit tests are in progress. Working to add more.
    • Replaced the api inheritance e2e with a new apibinding e2e. It tests basic functionality - just that binding works. Things related to testing more involved logic such as rebinding are in unit tests.

@sttts
Copy link
Member

sttts commented Apr 6, 2022

Moved everything to issues. Closing the epic for p3.

@sttts sttts closed this as completed Apr 6, 2022
Repository owner moved this from In Progress to Done in kcp Apr 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic Represents a larger feature with multiple stories kind/feature Categorizes issue or PR as related to a new feature. milestone-blocker Blocks closing out a milestone
Projects
Status: Done
Development

No branches or pull requests

5 participants