kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APis with controllers above or without clusters.

Related tags

Network kcp

kcp is a minimal Kubernetes API server

build status badge

How minimal exactly? kcp doesn't know about Pods or Nodes, let alone Deployments, Services, LoadBalancers, etc.

By default, kcp only knows about:

kubectl api-resources showing minimal API resources

Like vanilla Kubernetes, kcp persists these resources in etcd for durable storage.

Any other resources, including Kubernetes-standard resources like Pods, Nodes and the rest, can be added as CRDs and reconciled using the standard controllers.

Why would I want that?

Kubernetes is mainly known as a container orchestration platform today, but we believe it can be even more.

With the power of CustomResourceDefinitions, Kubernetes provides a flexible platform for declarative APIs of all types, and the reconciliation pattern common to Kubernetes controllers is a powerful tool in building robust, expressive systems.

At the same time, a diverse and creative community of tools and services has sprung up around Kubernetes APIs.

Imagine a declarative Kubernetes-style API for anything, supported by an ecosystem of Kubernetes-aware tooling, separate from Kubernetes-the-container-orchestrator.

That's kcp.

Is kcp a "fork" of Kubernetes? 🍴


kcp as a prototype currently depends on some unmerged changes to Kubernetes, but we intend to pursue these changes through the usual KEP process, until (hopefully!) Kubernetes can be configured to run as kcp runs today.

Our intention is that our experiments improve Kubernetes for everyone, by improving CRDs and scaling resource watching, and enabling more, better controllers for everyone, whether you're using Kubernetes as a container orchestrator or not.

Our kcp specific patches are in the feature-logical-clusters feature branch in the kcp-dev/kubernetes repo. See DEVELOPMENT.md for how the patches are structured and how they must be formatted during our experimentation phase. See GOALS.md for more info on how we intend to use kcp as a test-bed for exploring ideas that improve the entire ecosystem.

What's in this repo?

First off, this is a prototype, not a project. We're exploring these ideas here to try them out, experiment, and bounce them off each other. Our basic demo leverages the following components to show off these ideas:

  • kcp, which serves a Kubernetes-style API with a minimum of built-in types.
  • cluster-controller, which along with the Cluster CRD allows kcp to connect to other full-featured Kubernetes clusters, and includes these components:
    • syncer, which runs on Kubernetes clusters registered with the cluster-controller, and watches kcp for resources assigned to the cluster
    • deployment-splitter, which demonstrates a controller that can split a Deployment object into multiple "virtual Deployment" objects across multiple clusters.
    • crd-puller which demonstrates mirroring CRDs from a cluster back to kcp

So what's this for?

Multi-Cluster Kubernetes?

kcp could be useful for multi-cluster scenarios, by running kcp as a control plane outside of any of your workload clusters.

Multi-Tenant Kubernetes?

kcp could be useful for multi-tenancy scenarios, by allowing multiple tenant clusters inside a cluster to be managed by a single kcp control plane.

Local Kubernetes Development?

kcp could be useful for local development scenarios, where you don't necessarily care about all of Kubernetes' many built-in resources and their reconciling controllers.

Embedded/low-resource scenarios?

kcp could be useful for environments where resources are scarce, by limiting the number of controllers that need to run. Kubernetes' asynchronous reconciliation pattern can also be very powerful in disconnected or intermittently connected environments, regardless of how workloads actually run.

Is that all?

No! See our GOALS.md doc for more on what we are trying to accomplish with this prototype and our docs/ directory.

What does kcp stand for?

kcp as a project stands for equality and justice for all people.

However, kcp is not an acronym.

How do I get started?

  1. Clone the repository.
  2. Install Go (1.16+).
  3. Download the latest kubectl binary for your OS.
  4. Build and start kcp in the background: go run ./cmd/kcp start.
  5. Tell kubectl where to find the kubeconfig: export KUBECONFIG=.kcp/data/admin.kubeconfig (this assumes your working directory is the root directory of the repository).
  6. Confirm you can connect to kcp: kubectl api-resources.

For more scenarios, see DEVELOPMENT.md.

This sounds cool and I want to help!

Thanks! And great!

This work is still in early development, which means it's not ready for production, but also that your feedback can have a big impact.

You can reach us here, in this repository via issues and discussion, or:


  • Prototype 3: Transparent Multi-Cluster Cordon/Drain End-User Demo

    Prototype 3: Transparent Multi-Cluster Cordon/Drain End-User Demo

    Demo Objective

    User has a multi-cluster placeable application that can move transparently

    Demo Steps

    1. User creates a stateless web application, which is assigned to a physical cluster
    2. Physical cluster admin wants to perform maintenance on the cluster, but limit workload disruption
    3. Admin marks the cluster as cordoned (Unschedulable: true) -- new workloads are not assigned to the cluster
    4. Admin marks the cluster as drained/draining (EvictAfter: $now) -- existing workloads are rescheduled to another cluster, with some observed downtime
    5. With no workloads now scheduled on the cluster, the admin is free to operate on it, upgrade it, uninstall syncer, delete the cluster, etc.

    Action Items

    • [x] Scope the current demo as necessary to fit in prototype boundaries
    • [x] Create and link required tasks to realize demo
    • [x] #556
    • [x] #524
    • [ ] Contribute to final demo script and recording

    Nice to have

    • [ ] #525
    kind/feature epic milestone-blocker 
    opened by pweil- 26
  • Reworking namespaces

    Reworking namespaces

    This PR changes the pattern used to generate the downstream namespace. It generates a shorter string while maintaining a big enough random part to avoid conflicts.

    • Extends the namespaceLocator struct to include the workloadcluster UID and fully qualified path.
    • Renames the namespaceLocator logic-cluster field into workspace.
    • Spec Syncer now uses an indexer to look for the desired downstream namespace,so now we can change the namespace generation pattern without breaking previous deployments

    related: https://github.com/kcp-dev/kcp/issues/1280

    approved lgtm 
    opened by jmprusi 22
  • Add initial per-workspace quota support

    Add initial per-workspace quota support


    Add initial per-workspace quota support. I have only tested object count with configmaps. I assume other resources will work too, but I haven't tested them.

    Follow-up PRs will add support for quotas on namespaces in a workspace, making sure cpu/memory quota is enforced, etc.


    • [x] Address FIXMEs
    • [x] Godoc
    • [x] e2e


    • [x] https://github.com/kcp-dev/kubernetes/pull/75

    Related issue(s)

    Part of #1061

    approved lgtm kind/api-change 
    opened by ncdc 20
  • Workspaces VW: Fix obsolete permission management...

    Workspaces VW: Fix obsolete permission management...


    Fix obsolete permission management in the workspaces virtual workspace.

    Current situation

    The workspaces virtual workspace is still based on the old approach where user workspaces used to be created in top-level organization workspaces. It checks permissions against the clusterworkspaces/content resource named with the name of the current workspace (typically an organization) in the parent workspace of the current organization workspace.

    • for get, list and watch, it checks the access verb
    • for create, it checks the member verb

    Additionally to delete a workspace it also checks the delete verb on the clusterworkspaces/workspace resource of the current organization workspace.

    This is both incompatible with:

    • the new approach that non-admin user workspaces should not be created in top-level orgs in the future
    • the Home workspaces that can be created on-the-fly (as well as their home bucket parent workspaces) when first accessed.

    Implemented changes

    In the case of workspaces that are children of a top-level organization, we keep the same mechanism as before, to keep compatibility for a while for user workspaces already created in top-level organizations)

    In all other cases, SARs in the workspaces virtual workspace are now always checked against the clusterworkspaces/workspace resource in the current workspace (not the parent anymore).

    • for get, list, watch requests, it checks the get verb
    • for create requests, it checks the create verb
    • for delete requests, it checks the get verb, as well as the delete verb on resource name of the child workspace which is being deleted.

    Due to the KCP authorizer architecture, these SAR will also check the access verb on the clusterworkspaces/content resource in the parent workspaces (through the workspaceContentAuthorizer) as well as basic membership of the top-level org through the topLevelOrgAccessAuthorizer. So we don't loose any security checks previously done.

    Related issue(s)

    Prerequisite PR for the Home workspace EPIC

    approved lgtm 
    opened by davidfestal 19
  • system:authenticated group is not added to users

    system:authenticated group is not added to users

    Describe the bug system:authenticated group is not added to users.

    To Reproduce Steps to reproduce the behavior:

    1. Create a role binding that applies to system:authenticated
    2. Make a request with an unprivileged user that should be authorized for the role binding created in step 1

    Expected behavior User would be allowed to make the request

    opened by kylape 18
  • Add a label to deactivate automatic namespace scheduling

    Add a label to deactivate automatic namespace scheduling

    Currently the namespace controller owns the responsibility of assigning namespaces to physical clusters. The only option for other controllers, like the deployment-splitter one, or users manually, to distribute resources across physical clusters is to deactivate the namespace controller by starting KCP with --run-controllers=false --unsupported-run-individual-controllers="workspace-scheduler,cluster".

    Meanwhile more advanced scheduling / placement scenarios are supported, this PR proposes to introduce the experimental.scheduling.kcp.dev/disabled label, that can be added to namespaces, in order to deactivate the automatic placement to physical clusters, performed by the namespace controller.

    Setting this label to false prevents the namespace controller from overriding the scheduling logic performed by the deployment-splitter controller, but also manual scheduling, when working on global load-balancing use cases for example.

    Fixes #494

    opened by astefanutti 18
  • move Config to separate file

    move Config to separate file


    Move Config, CompletedConfig and the related parts from server.go to config.go

    No code change, just file split to make it easier to consume and reason about. As discussed with @sttts

    approved lgtm ok-to-test 
    opened by deitch 16
  • SyncTarget Uniqueness

    SyncTarget Uniqueness

    This PR improves the uniqueness of the labels/annotations/finalizers that rely currently on the SyncTarget Name by replacing it with a hash generated from the SyncTarget Name + SyncTarget workspace.

    • Introduces a new helper in workloadv1alpha1: ToSyncTargetKey(syncTargetName, syncTargetWorkspace)
    • Replaces all usages of SyncTarget Name in labels/annotations/finalizers
    approved lgtm kind/api-change 
    opened by jmprusi 16
  • Syncer: refuse to work on sync target UID discrepancy.

    Syncer: refuse to work on sync target UID discrepancy.

    The changes in this PR are focused on avoiding a Syncer running with an old SyncTarget, this is accomplished by:

    • Syncer:
      • New flag for providing the expected sync target UID: --sync-target-uid
      • When starting will check that the provided UID matches the existing sync target UID, if not, fail to start
      • When patching a sync target status for setting the heartbeat, tries to match the expected sync target UID, if not, refuses to patch
    • KCP Kubectl plugin: The generated manifests include the sync target UID flag.
    • SyncTarget controller: Appends the desired sync target UID to the VirtualWorkspace URLs.
    • Syncer VirtualWorkspace: validates that the sync target name and UID in the request match.

    related to: https://github.com/kcp-dev/kcp/issues/1679

    approved lgtm 
    opened by jmprusi 15
  • syncer/namespace-locator: Rename path to workspace

    syncer/namespace-locator: Rename path to workspace

    This PR renames the "path" field to "workspace".

    ~~This is a breaking change that will trigger a resync of all the resources~~ It's compatible with old namespace locators.

    approved lgtm 
    opened by jmprusi 15
  • tenancy: add cluster workspace type extensions

    tenancy: add cluster workspace type extensions

    These extensions allow users to re-use other definitions to compose complex cluster workspace types.

    Signed-off-by: Steve Kuznetsov [email protected]

    Part of #1149 /assign @sttts /cc @davidfestal @ncdc @shawn-hurley

    approved lgtm 
    opened by stevekuznetsov 15
  • [WIP] support for local cluster services DNS resolution

    [WIP] support for local cluster services DNS resolution


    Configure synced deployments DNS Config to point to kcp DNS resolver mapping local namespaces to physical namespaces for cluster local services.

    Note that this is currently a WIP. I'm opening it to gather early feedback. I included several TODO(LV) on things I'm aware need to be changed before considering this PR mergeable.

    Related issue(s)

    Fixes #505 Fixes #1465

    do-not-merge/work-in-progress needs-ok-to-test 
    opened by lionelvillard 2
  • Remove the redirect from shard to virtual workspaces

    Remove the redirect from shard to virtual workspaces


    Remove the redirect from shard to virtual workspaces in case of standalone virtual workspace deployment. Npw that the old "personal workspaces" feature has been removed from both the workspaces virtual workspace and the CLI, there's no need to point to virtual workspaces through the KCP server host. In the future explicit virtual workspace Base URL (carried by the Shard resource) should be used.

    So when a virtual workspace is started in standalone mode, there's no need anymore to setup a redirection from the KCP shard host to the virtual workspace host.

    Related issue(s)

    This is a followup of PR https://github.com/kcp-dev/kcp/pull/1685

    opened by davidfestal 2
  • logging: use kind-prefixed fields instead of string-formatting

    logging: use kind-prefixed fields instead of string-formatting

    Signed-off-by: Steve Kuznetsov [email protected]

    Part of #1694 /assign @sttts

    Using the resource instead of the kind would be cool but I don't know that there's any lightweight way to figure that out.

    opened by stevekuznetsov 2
  • Add option to cmd/test-server and/or cmd/sharded-test-server to deploy the virtual workspaces server standalone

    Add option to cmd/test-server and/or cmd/sharded-test-server to deploy the virtual workspaces server standalone

    This should be optional, and match the way the Helm chart deploys the virtual workspaces server in a standalone container, e.g.



    help wanted 
    opened by ncdc 1
  • v0.6.4(Aug 2, 2022)

    What's Changed

    • cli/sync: create service account secret in advance to trigger token creation (#1616)
    • fix flaky informers (#1657)

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.6.3...v0.6.4

    Source code(tar.gz)
    Source code(zip)
  • v0.6.3(Jul 22, 2022)

    What's Changed

    • 0.6: ddsif: replace discovery polling by @sttts in https://github.com/kcp-dev/kcp/pull/1602

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.6.2...v0.6.3

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Jul 22, 2022)

    What's Changed

    • [release-0.6] Don't add /clusters/ prefix to /services/ requests by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1593

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.6.1...v0.6.2

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Jul 20, 2022)

    What's Changed

    • [release-0.6] syncer/namespace-locator: Rename path to workspace by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1577

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Jul 18, 2022)

    What's Changed since v0.6.0-alpha.1

    • [release-0.6] cli: require absolute type with --ignore-existing by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1534
    • [release-0.6] server/home: create home workspace with final URL on '~' access by @sttts in https://github.com/kcp-dev/kcp/pull/1537
    • [release-0.6] Fix typos in APIExport bootstrapped ClusterRoleBindings by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1541
    • [release-0.6] server: add --shard-external-url by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1547
    • [release-0.6] ddsif: fix lost event handlers by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1551
    • [release-0.6] reconciler/apiexport: switch from rsa4096 to 256 bit cryptographic random string by @openshift-cherrypick-robot in https://github.com/kcp-dev/kcp/pull/1556

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.6.0-alpha.0...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0-alpha.0(Jul 14, 2022)

    Milestone Blocker Epics

    • https://github.com/kcp-dev/kcp/issues/1225 Multi-Release-Epic: Sharding
    • https://github.com/kcp-dev/kcp/issues/1219 API Export Permissions on Binding
    • https://github.com/kcp-dev/kcp/issues/1149 ClusterWorkspaceType Take 2
    • https://github.com/kcp-dev/kcp/issues/1069 User home workspaces
    • https://github.com/kcp-dev/kcp/issues/981 Multi-workspace controller development
    • https://github.com/kcp-dev/kcp/issues/912 Consume Compute via Transparent Multi Cluster set up in a different workspace

    What's Changed

    • virtual: Avoid error logs for /readz requests by @davidfestal in https://github.com/kcp-dev/kcp/pull/1185
    • Add authorizers in virtual workspaces by @davidfestal in https://github.com/kcp-dev/kcp/pull/1186
    • kubectl/crd snapshot: support multidoc by @ncdc in https://github.com/kcp-dev/kcp/pull/1182
    • adds crdNoOverlappingGVRAdmission admission by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1170
    • pkg/authorization/apibinding_authorizer: don't ignore indexer errors. by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1197
    • Unify workloads.kcp.dev => workload.kcp.dev by @sttts in https://github.com/kcp-dev/kcp/pull/1200
    • Syncer/mutators: Resolve fieldRef "metadata.namespace" Envs before pushing to pcluster by @jmprusi in https://github.com/kcp-dev/kcp/pull/1199
    • Add technical docs of locations and state machine by @sttts in https://github.com/kcp-dev/kcp/pull/1174
    • Implement the Syncer virtual workspace authorizer by @davidfestal in https://github.com/kcp-dev/kcp/pull/1176
    • makefile: manage boilerplate verification locally by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1173
    • Change gitops folder commit hash update is applied to by @kylape in https://github.com/kcp-dev/kcp/pull/1204
    • Change gitops folder commit hash update is applied to (take 2) by @kylape in https://github.com/kcp-dev/kcp/pull/1205
    • adding authorizer for the api export virtual workspace by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/1177
    • CONTRIBUTING.md: add Go Proverbs by @sttts in https://github.com/kcp-dev/kcp/pull/1208
    • Replace --use with --enter by @MikeSpreitzer in https://github.com/kcp-dev/kcp/pull/1212
    • APIExport virtual workspace: add core/v1 by @ncdc in https://github.com/kcp-dev/kcp/pull/1220
    • e2e: extract APIExport/APIBinding helpers by @ncdc in https://github.com/kcp-dev/kcp/pull/1218
    • contrib: rename demo to demos-unmaintained by @sttts in https://github.com/kcp-dev/kcp/pull/1215
    • Added ppc64le support to KCP image by @mayurwaghmode in https://github.com/kcp-dev/kcp/pull/1216
    • Add E2E tests for cordon/uncordon/drain CLI by @chrisahl in https://github.com/kcp-dev/kcp/pull/1098
    • Add virtual workspace readiness checks to the KCP server in the embedded case by @davidfestal in https://github.com/kcp-dev/kcp/pull/1226
    • build(deps): bump docker/setup-qemu-action from 1 to 2 by @dependabot in https://github.com/kcp-dev/kcp/pull/1229
    • e2e/apibinding: require.Eventually for discovery by @sttts in https://github.com/kcp-dev/kcp/pull/1231
    • e2e/virtual/initializers: fix flake in TestInitializingWorkspacesVirtualWorkspaceDiscovery by @sttts in https://github.com/kcp-dev/kcp/pull/1232
    • clusterworkspacetype: stop special-casing Universal by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1237
    • Enable syncer finalizers (k8s & virtual) by default. by @jmprusi in https://github.com/kcp-dev/kcp/pull/1228
    • APIBinding reconciler checks for overlapping CRDs in a logical cluster by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1217
    • Fix Ingress cluster assignment based on namespace placement by @astefanutti in https://github.com/kcp-dev/kcp/pull/1241
    • CONTRIBUTING.md: document nested require statements by @sttts in https://github.com/kcp-dev/kcp/pull/1251
    • e2e/virtual/syncer: fixing race with resource controller in TestSyncerVirtualWorkspace by @sttts in https://github.com/kcp-dev/kcp/pull/1247
    • ci: turn off GitHub CI for jobs we run in Prow by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1207
    • pkg/etcd,server: add --embedded-etcd-force-new-cluster by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1250
    • ci: delete demos.yaml by @ncdc in https://github.com/kcp-dev/kcp/pull/1252
    • Added ppc64le and arm64 support to the Syncer image by @mayurwaghmode in https://github.com/kcp-dev/kcp/pull/1235
    • tenancy: qualify cluster workspace types by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1230
    • Update video on readme to v0.4 by @robszumski in https://github.com/kcp-dev/kcp/pull/1260
    • ClusterWorkspace+Types: allow name "org" by @sttts in https://github.com/kcp-dev/kcp/pull/1263
    • pkg/authorization: don't check for cluster workspace lister. by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1265
    • apibinding: make reference.workspace.path optional and defaulted by @sttts in https://github.com/kcp-dev/kcp/pull/1262
    • clusterworkspaces: make initializers implicit by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1264
    • kubectl kcp ws: fix type printing by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1268
    • reconciler/workload/resource: use RF3339 timestamp format by @jmprusi in https://github.com/kcp-dev/kcp/pull/1269
    • Placement API by @qiujian16 in https://github.com/kcp-dev/kcp/pull/1258
    • README.md: add hypercube logo and sources by @sttts in https://github.com/kcp-dev/kcp/pull/1210
    • clusterworkspacetype: expose virtual workspace URLs by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1270
    • initializingworkspaces: enforce permissions by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1267
    • virtual: Remove unsupported verbs from virtual API server discovery by @astefanutti in https://github.com/kcp-dev/kcp/pull/1272
    • Remove logo icon file with invalid name by @astefanutti in https://github.com/kcp-dev/kcp/pull/1276
    • virtual workspaces: skips registartion of default health checks by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1273
    • authorization: clarify/fix service accounts and workspace initialization by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1261
    • Added prerequisites on the README by @ppatierno in https://github.com/kcp-dev/kcp/pull/1284
    • cmd/test-server: pass flags to kcp by @sttts in https://github.com/kcp-dev/kcp/pull/1286
    • fix typo: indexByWorks{ap->pa}ce by @sttts in https://github.com/kcp-dev/kcp/pull/1290
    • reconciler/apiexport: don't klog.Fatal by @sttts in https://github.com/kcp-dev/kcp/pull/1291
    • cli: fix ClusterWorkspace columns output by @sttts in https://github.com/kcp-dev/kcp/pull/1296
    • cmd/kcp: non-zero return code on error by @sttts in https://github.com/kcp-dev/kcp/pull/1287
    • server: centrally create and start ddsif by @sttts in https://github.com/kcp-dev/kcp/pull/1295
    • Reduce log noise by @sttts in https://github.com/kcp-dev/kcp/pull/1297
    • reconciler/placement: fix patch typo by @sttts in https://github.com/kcp-dev/kcp/pull/1298
    • e2e: switch NewWorkspaceFixture to options by @sttts in https://github.com/kcp-dev/kcp/pull/1289
    • Clean up unused e2e helpers by @sttts in https://github.com/kcp-dev/kcp/pull/1300
    • admission/clusterworkspace: check errors in unit test by @sttts in https://github.com/kcp-dev/kcp/pull/1302
    • pkg/reconciler/apis/apiexport: clarify patching strategy in case of programming errors by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1304
    • Makefile: add test-e2e-shared by @sttts in https://github.com/kcp-dev/kcp/pull/1310
    • tenancy: show Deleting in phase column during ClusterWorkspace deletion by @sttts in https://github.com/kcp-dev/kcp/pull/1303
    • APIBinding/Workspace deletion improvement by @sttts in https://github.com/kcp-dev/kcp/pull/1299
    • github/ci.yaml: use test-e2e-shared make target by @sttts in https://github.com/kcp-dev/kcp/pull/1311
    • e2e/syncer: less noise with framework.Eventually by @sttts in https://github.com/kcp-dev/kcp/pull/1317
    • reconciler/clusterworkspace: split into independent reconcilers by @sttts in https://github.com/kcp-dev/kcp/pull/1288
    • admin.kubeconfig: remove cross-cluster context by @sttts in https://github.com/kcp-dev/kcp/pull/1312
    • e2e/framework: wait some time until printing message in Eventually by @sttts in https://github.com/kcp-dev/kcp/pull/1292
    • authorizer: unify workspace access reason by @sttts in https://github.com/kcp-dev/kcp/pull/1314
    • admission: record the user creating a workspace by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1321
    • Fix partial meta request determination logic by @ncdc in https://github.com/kcp-dev/kcp/pull/1322
    • ClusterWorkspaces: add optional spec.shard scheduling constraints by @sttts in https://github.com/kcp-dev/kcp/pull/1318
    • admission/apibinding: fail closed when OpenAPI does not validate by @sttts in https://github.com/kcp-dev/kcp/pull/1301
    • Update replace directive to last k/k commit by @davidfestal in https://github.com/kcp-dev/kcp/pull/1306
    • server/apiextensions: use indexes and fixes by @sttts in https://github.com/kcp-dev/kcp/pull/1294
    • front-proxy: add --authentication-{pass-on,drop}-groups by @sttts in https://github.com/kcp-dev/kcp/pull/1305
    • virtualworkspace: add a proxy for workspace content by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1323
    • turn the watch cache on by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1240
    • pkg/virtual: externalize VW name and remove extra informers by @sttts in https://github.com/kcp-dev/kcp/pull/1328
    • virtualworkspaces: propagate clarifying changes by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1329
    • virtualworkspaces: allow access to remove iniitalizers by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1330
    • pkg/admission: add reserved metadata admission plugin by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1343
    • e2e/syncer: switch to multi-arch image by @sttts in https://github.com/kcp-dev/kcp/pull/1347
    • Use logicalcluster.ClusterHeader constant for X-Kubernetes-Cluster by @sttts in https://github.com/kcp-dev/kcp/pull/1348
    • Do not stomp other APIExports in a workspace with NegotatedAPIResources by @sttts in https://github.com/kcp-dev/kcp/pull/1346
    • reconciler/workload/namespace: stop hotloop by @sttts in https://github.com/kcp-dev/kcp/pull/1345
    • Fix hotloop in placement due to bad patch by @ncdc in https://github.com/kcp-dev/kcp/pull/1352
    • e2e: print artifact paths by @sttts in https://github.com/kcp-dev/kcp/pull/1356
    • reconciler/apibinding: clean up logs by @sttts in https://github.com/kcp-dev/kcp/pull/1358
    • e2e: cope with asynchronously served (bound) CRDs by @sttts in https://github.com/kcp-dev/kcp/pull/1357
    • virtual: clean up post-start errors and var names by @sttts in https://github.com/kcp-dev/kcp/pull/1360
    • Add shard proxying and add (1-shard) sharded CI job with front-proxy by @sttts in https://github.com/kcp-dev/kcp/pull/1203
    • e2e/syncer: make the test app sleep, not restart with AlreadyExists by @sttts in https://github.com/kcp-dev/kcp/pull/1355
    • e2e: reduce redundant syncer test logs by @sttts in https://github.com/kcp-dev/kcp/pull/1342
    • CONTRIBUTING.md: document testing by @sttts in https://github.com/kcp-dev/kcp/pull/1363
    • e2e/framework: doc Eventually by @sttts in https://github.com/kcp-dev/kcp/pull/1362
    • turn off the watch cache temporarily until we resolve the issue with DDSIF (not syncing after restart) by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1368
    • reconciler/apibinding: V(2) mapping schemas by @sttts in https://github.com/kcp-dev/kcp/pull/1359
    • pkg/admission/reservedmetadata: optimize allocations by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1367
    • kcp CLI: error out for an non existent workspace while changing ws by @sm43 in https://github.com/kcp-dev/kcp/pull/1278
    • server/apiextensions: stop serving non-wildcard identity requests by @sttts in https://github.com/kcp-dev/kcp/pull/1365
    • server: only make default paths absolute, not user-provided ones by @sttts in https://github.com/kcp-dev/kcp/pull/1349
    • cmd/kcp-front-proxy/authentication/groups.go: fix groups filtering by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1371
    • Makefile: be tolerant if local directory is not a git checkout by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1379
    • Makefile: wait for test server admin.kubeconfig before starting tests by @sttts in https://github.com/kcp-dev/kcp/pull/1381
    • informer: do not klog.Fatalf by @sttts in https://github.com/kcp-dev/kcp/pull/1383
    • admission: only reserve our exact groups by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1386
    • Use authorization.WorkspaceAcccessNotPermittedReason by @sttts in https://github.com/kcp-dev/kcp/pull/1378
    • apibinding/conflictchecker: use APIBinding.status.boundResources, not APIExport by @sttts in https://github.com/kcp-dev/kcp/pull/1382
    • VSCode: cleanup KCP launch configurations and use tokens by @davidfestal in https://github.com/kcp-dev/kcp/pull/1390
    • virtual: generalize label selector wrapper and get rid of panic by @sttts in https://github.com/kcp-dev/kcp/pull/1393
    • virtual: Support create, delete and deletecollection requests by @astefanutti in https://github.com/kcp-dev/kcp/pull/1283
    • virtual/fixedgvs: import cleanup by @sttts in https://github.com/kcp-dev/kcp/pull/1394
    • Revert "apibinding/conflictchecker: use APIBinding.status.boundResources, not APIExport" by @sttts in https://github.com/kcp-dev/kcp/pull/1400
    • Update OWNERS to fix my name by @davidfestal in https://github.com/kcp-dev/kcp/pull/1403
    • pkg/server/virtual.go: fix redirection of url request parameters by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1401
    • kcp workspaces: improve wording for workspace creation by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1402
    • Workspaces VW: Fix obsolete permission management... by @davidfestal in https://github.com/kcp-dev/kcp/pull/1374
    • Fix image build by @ncdc in https://github.com/kcp-dev/kcp/pull/1407
    • authz: protect status subresource from non-system:masters by @sttts in https://github.com/kcp-dev/kcp/pull/1396
    • System CRDs -> APIBindings by @sttts in https://github.com/kcp-dev/kcp/pull/1316
    • Various dynamic discovery shared informer factory updates by @ncdc in https://github.com/kcp-dev/kcp/pull/1372
    • Fix: Add version for kcp and syncer by @varshaprasad96 in https://github.com/kcp-dev/kcp/pull/1409
    • workspaces VW: Fix CWT management by @davidfestal in https://github.com/kcp-dev/kcp/pull/1414
    • cmd,pkg: use constant for system:master by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/1410
    • tenancy: add cluster workspace type extensions by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1375
    • Noticed typo on the log by @matzew in https://github.com/kcp-dev/kcp/pull/1391
    • brings back the watch cache by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1377
    • Exit build process if Kubernetes version is missing by @doru1004 in https://github.com/kcp-dev/kcp/pull/1418
    • e2e: stop spamming entire objects by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1424
    • config: generate APIResourceSchemas and APIExports robustly by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1422
    • e2e/virtual/apiexport: fix authz flake by @sttts in https://github.com/kcp-dev/kcp/pull/1436
    • e2e/framework: fix root dir for in-process server by @sttts in https://github.com/kcp-dev/kcp/pull/1437
    • syncer: avoid fatal WorkloadCluster get by @sttts in https://github.com/kcp-dev/kcp/pull/1439
    • syncer/apiimporter: log what it does by @sttts in https://github.com/kcp-dev/kcp/pull/1443
    • Hunting APIBinding flake by @sttts in https://github.com/kcp-dev/kcp/pull/1438
    • config/universal: mark default ns create-only by @sttts in https://github.com/kcp-dev/kcp/pull/1444
    • e2e/watchcache: fix missing identity logic by @sttts in https://github.com/kcp-dev/kcp/pull/1442
    • Add kcp start options for embedded etcd server Prometheus scrape URLs by @MikeSpreitzer in https://github.com/kcp-dev/kcp/pull/1435
    • placement controller by @qiujian16 in https://github.com/kcp-dev/kcp/pull/1277
    • Bump kube: to pickup multi-value indexer fix #79 by @sttts in https://github.com/kcp-dev/kcp/pull/1447
    • apis: add omitempty to optional fields by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1423
    • Add kcp start option --embedded-etcd-quota-backend-bytes by @MikeSpreitzer in https://github.com/kcp-dev/kcp/pull/1430
    • README: update docs for starting by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1451
    • server: bootstrap root phase-1 after controllers are starting by @sttts in https://github.com/kcp-dev/kcp/pull/1453
    • Add --version flag for kubectl-kcp plugin by @apoorvajagtap in https://github.com/kcp-dev/kcp/pull/1432
    • reconciler/apibinding: flake: resources should only be bound when established by @sttts in https://github.com/kcp-dev/kcp/pull/1440
    • Bootstrap new ClusterWorkspaceTypes for the Home workspaces feature. by @davidfestal in https://github.com/kcp-dev/kcp/pull/1455
    • server/apiextensions: disable non-system-CRD non-identity wildcard requests by @sttts in https://github.com/kcp-dev/kcp/pull/1395
    • tenancy: fully qualify type references by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1429
    • config/root: fix CWTs by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1464
    • Rename: WorkloadCluster->SyncTarget by @ncdc in https://github.com/kcp-dev/kcp/pull/1461
    • Add e2e-sharded docs only job by @ncdc in https://github.com/kcp-dev/kcp/pull/1466
    • Add flake hunting docs by @ncdc in https://github.com/kcp-dev/kcp/pull/1463
    • docs: link to virtual workspaces demo by @markmc in https://github.com/kcp-dev/kcp/pull/1460
    • Fix trailing new lines by @davidfestal in https://github.com/kcp-dev/kcp/pull/1469
    • authorizer/apibinding: prefix users and groups in MaximalPermissionPolicy by @sttts in https://github.com/kcp-dev/kcp/pull/1411
    • Add soft impersonation utils for client-go clients by @davidfestal in https://github.com/kcp-dev/kcp/pull/1468
    • apis/apis/APIExport: fix typos in maximalPermissionPolicy by @sttts in https://github.com/kcp-dev/kcp/pull/1470
    • Implement the Home workspaces http handler by @davidfestal in https://github.com/kcp-dev/kcp/pull/1373
    • Impersonation in workspaces virtual workspace SubjectAccessReview requests by @davidfestal in https://github.com/kcp-dev/kcp/pull/1456
    • CLI: Support home workspace through ~ by @davidfestal in https://github.com/kcp-dev/kcp/pull/1392
    • Reworking namespaces by @jmprusi in https://github.com/kcp-dev/kcp/pull/1309
    • e2e: add user-agents to hand-crafted rest configs by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1459
    • Add shard-base-url flag to default clusterworkspaceshards by @csams in https://github.com/kcp-dev/kcp/pull/1478
    • cli/workload/sync: improve usability by @sttts in https://github.com/kcp-dev/kcp/pull/1475
    • reconciler/apis/apibinding: make phase=Bound permanent by @sttts in https://github.com/kcp-dev/kcp/pull/1420
    • Update placement doc by @qiujian16 in https://github.com/kcp-dev/kcp/pull/1472
    • API: Rename and make ClusterResourceStateLabelPrefix public by @jmprusi in https://github.com/kcp-dev/kcp/pull/1485
    • Testing wrapping of cluster client calls by @varshaprasad96 in https://github.com/kcp-dev/kcp/pull/1376
    • Syncer: add support for qps and burst by @ncdc in https://github.com/kcp-dev/kcp/pull/1486
    • adds a shard-name flag for assigning a name to a shard instance by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1479
    • *: remove the vestigial attempt at cross-shard resourceversions by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1487
    • config/root: avoid race of bootstrapping with controller by @sttts in https://github.com/kcp-dev/kcp/pull/1491
    • admission/clusterworkspace: move owner annotation code here by @sttts in https://github.com/kcp-dev/kcp/pull/1492
    • server/home: check owner on 'GET ~' and fix flake by @sttts in https://github.com/kcp-dev/kcp/pull/1480
    • Wipe owner info as soon as possible by @sttts in https://github.com/kcp-dev/kcp/pull/1494
    • sharded-test-server: allows for specifying the number of shards to create by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1484
    • apis/workload: move workload.kcp.dev/skip-default-object-creation here from apis.kcp.dev/v1alpha1 by @sttts in https://github.com/kcp-dev/kcp/pull/1481
    • e2e: require two failed pings to fail the test by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1489
    • Adding permissions claims API for granting more resource for VirtualWorkspace by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/1244
    • Allows syncer feature gate annotation in reserved-metadata admission by @jmprusi in https://github.com/kcp-dev/kcp/pull/1496
    • apibinding: name checker should take into account the group name by @p0lyn0mial in https://github.com/kcp-dev/kcp/pull/1505
    • admission/clusteworkspacetypeexists: in-place validation, fixes by @sttts in https://github.com/kcp-dev/kcp/pull/1503
    • Waiting for the binding to have observed the permission claims in test by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/1511
    • pkg/apis: fix go mod by @ncdc in https://github.com/kcp-dev/kcp/pull/1513
    • use a more minimal k8s fork by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1498
    • Add stub livez handler in the proxy by @csams in https://github.com/kcp-dev/kcp/pull/1508
    • admission/clusterworkspaceexists: use builder pattern in tests by @sttts in https://github.com/kcp-dev/kcp/pull/1516
    • admission/clusteworkspacetypeexists: lower-case types, dashes, cli type search by @sttts in https://github.com/kcp-dev/kcp/pull/1474
    • cli: deprecate list command by @sttts in https://github.com/kcp-dev/kcp/pull/1519
    • test-servers: enable audit logs by @sttts in https://github.com/kcp-dev/kcp/pull/1441
    • Fix a typo s/matchins/matching by @kasturinarra in https://github.com/kcp-dev/kcp/pull/1525
    • Don't unschedule a resource if blocked by a cluster or syncer finalizer by @jmprusi in https://github.com/kcp-dev/kcp/pull/1515
    • Remove non-existing scheduling-disabled label from ReservedMetadata allow list by @jmprusi in https://github.com/kcp-dev/kcp/pull/1522
    • cli: switch meaning of 'kubectl ws' to go to home workspace, add 'kubectl ws .' by @sttts in https://github.com/kcp-dev/kcp/pull/1521
    • cli: promote '--short' option to be usable also in 'kubectl ws --short' syntax by @sttts in https://github.com/kcp-dev/kcp/pull/1520
    • cli/workload/sync: MaxSyncTargetNameLength decreased by SyncerIDPrefix length by @robinbobbitt in https://github.com/kcp-dev/kcp/pull/1527
    • server/home: avoid returning an uninitialized ~ workspace by @sttts in https://github.com/kcp-dev/kcp/pull/1523

    New Contributors

    • @p0lyn0mial made their first contribution in https://github.com/kcp-dev/kcp/pull/1170
    • @MikeSpreitzer made their first contribution in https://github.com/kcp-dev/kcp/pull/1212
    • @mayurwaghmode made their first contribution in https://github.com/kcp-dev/kcp/pull/1216
    • @robszumski made their first contribution in https://github.com/kcp-dev/kcp/pull/1260
    • @ppatierno made their first contribution in https://github.com/kcp-dev/kcp/pull/1284
    • @sm43 made their first contribution in https://github.com/kcp-dev/kcp/pull/1278
    • @matzew made their first contribution in https://github.com/kcp-dev/kcp/pull/1391
    • @doru1004 made their first contribution in https://github.com/kcp-dev/kcp/pull/1418
    • @apoorvajagtap made their first contribution in https://github.com/kcp-dev/kcp/pull/1432
    • @markmc made their first contribution in https://github.com/kcp-dev/kcp/pull/1460
    • @kasturinarra made their first contribution in https://github.com/kcp-dev/kcp/pull/1525

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.5.0-alpha.0...v0.6.0-alpha.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0-alpha.1(Jun 1, 2022)

    Milestone Blocker Epics

    • https://github.com/kcp-dev/kcp/issues/280 Deploy an Application: SA Kubeconfigs point to KCP
    • https://github.com/kcp-dev/kcp/issues/759 Code-generate scoping wrappers for arbitrary k8s.io/code-generator generated clients and informers
    • https://github.com/kcp-dev/kcp/issues/846 APIBindings: delete CRs when the APIBinding is deleted
    • https://github.com/kcp-dev/kcp/issues/912 Multi-Release-Epic: Consume Compute via Transparent Multi Cluster set up in a different workspace
    • https://github.com/kcp-dev/kcp/issues/914 Advanced Scheduling
    • https://github.com/kcp-dev/kcp/issues/981 Multi-Release-Epic: multi-workspace controller development
    • https://github.com/kcp-dev/kcp/issues/1013 Add Authorizer that let's APIExport owner restrict what a user can do with objects of an APIBinding

    Source: https://github.com/kcp-dev/kcp/issues?q=is%3Aissue+label%3Amilestone-blocker+milestone%3Av0.5.0+is%3Aopen+label%3Aepic

    What's Changed

    • reconciler/scheduling/location: add missing index by @sttts in https://github.com/kcp-dev/kcp/pull/970
    • Remove WorkloadClusterSpec.Kubeconfig by @itdove in https://github.com/kcp-dev/kcp/pull/974
    • build(deps): bump actions/checkout from 2 to 3 by @dependabot in https://github.com/kcp-dev/kcp/pull/962
    • build(deps): bump actions/upload-artifact from 2 to 3 by @dependabot in https://github.com/kcp-dev/kcp/pull/963
    • build(deps): bump actions/setup-go from 2 to 3 by @dependabot in https://github.com/kcp-dev/kcp/pull/964
    • Towards more stable syncer by @ncdc in https://github.com/kcp-dev/kcp/pull/955
    • Default to -v=2 by @ncdc in https://github.com/kcp-dev/kcp/pull/979
    • reconciler/workload/scheduling: remove wrong resource enqueuing avoiding optimization by @sttts in https://github.com/kcp-dev/kcp/pull/978
    • bump(kube): 902041f0e10a by @ncdc in https://github.com/kcp-dev/kcp/pull/986
    • Make 'kubectl kcp workload sync' idempotent by @itdove in https://github.com/kcp-dev/kcp/pull/975
    • Stop dynamic informers when their APIs go away + a couple of ns controller fixes by @ncdc in https://github.com/kcp-dev/kcp/pull/987
    • Don't log when systemCRDProvider can't find ws by @ncdc in https://github.com/kcp-dev/kcp/pull/991
    • Fix workspace deletion e2e flake by @qiujian16 in https://github.com/kcp-dev/kcp/pull/989
    • Front proxy: set sane transport defaults and enable http2 to backends by @csams in https://github.com/kcp-dev/kcp/pull/993
    • ci: update to actions/[email protected] by @sttts in https://github.com/kcp-dev/kcp/pull/965
    • docs/auth: document authorization by @s-urbaniak in https://github.com/kcp-dev/kcp/pull/627
    • docs/authorization.md: typo fix by @sttts in https://github.com/kcp-dev/kcp/pull/995
    • Advanced scheduling by @jmprusi in https://github.com/kcp-dev/kcp/pull/942
    • Revert "ci: update to actions/[email protected]" by @sttts in https://github.com/kcp-dev/kcp/pull/1001
    • Remove kube imports in staging by @ncdc in https://github.com/kcp-dev/kcp/pull/1000
    • Handle logical cluster move to kcp-dev/logicalcluster by @fabianvf in https://github.com/kcp-dev/kcp/pull/1002
    • cleanup ClusterRoleBinding on failed workspace creation by @geoberle in https://github.com/kcp-dev/kcp/pull/1010
    • Add front proxy by @kylape in https://github.com/kcp-dev/kcp/pull/973
    • Forbid kcp.dev CRD groups outside system:system-crds by @robinbobbitt in https://github.com/kcp-dev/kcp/pull/1006
    • Follow-ups of namespace scheduler fixing by @sttts in https://github.com/kcp-dev/kcp/pull/997
    • Fetch external hostname from kcp-front-proxy route. by @csams in https://github.com/kcp-dev/kcp/pull/1014
    • syncer: refactor into two normal controllers by @sttts in https://github.com/kcp-dev/kcp/pull/1011
    • Generate openapiv2 code for all KCP APIs by @davidfestal in https://github.com/kcp-dev/kcp/pull/1023
    • image: Add entrypoint to container image by @micahhausler in https://github.com/kcp-dev/kcp/pull/1020
    • Add helpers in CommonAPIResourceSpec by @davidfestal in https://github.com/kcp-dev/kcp/pull/1024
    • Prepare for other types of virtuall workspaces by @davidfestal in https://github.com/kcp-dev/kcp/pull/1025
    • Allow several virtual workspace commands by @davidfestal in https://github.com/kcp-dev/kcp/pull/1027
    • admission: complain about the type of the correct object by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1029
    • ci: ensure no k8s.io modules are imported from outside of the fork by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1031
    • reconcilers/workload: shut down controllers correctly by @sttts in https://github.com/kcp-dev/kcp/pull/1034
    • server: initialize logs early to avoid races by @sttts in https://github.com/kcp-dev/kcp/pull/1036
    • virtual: add ForwardingRegistry by @sttts in https://github.com/kcp-dev/kcp/pull/1037
    • Dynamic Virtual workspace implementation by @davidfestal in https://github.com/kcp-dev/kcp/pull/1039
    • reconciler/scheduling: fix tombstone handling on delete by @sttts in https://github.com/kcp-dev/kcp/pull/1049
    • authorization: nits by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1047
    • Misc pre-754 changes by @sttts in https://github.com/kcp-dev/kcp/pull/1053
    • Syncer virtual workspace by @davidfestal in https://github.com/kcp-dev/kcp/pull/754
    • virtual: fix some GoDoc by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1048
    • dynamic-informer: stop informers when context is done by @sttts in https://github.com/kcp-dev/kcp/pull/1054
    • Update Syncer VSCode launch configuration by @davidfestal in https://github.com/kcp-dev/kcp/pull/1068
    • virtual/syncer: add documentation to the URL parsing by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1075
    • virtual: expand APIDefinitionSetGetter by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1076
    • add kcp workload cordon/uncordon/drain by @chrisahl in https://github.com/kcp-dev/kcp/pull/1005
    • Use private gitops repo to deploy from main by @kylape in https://github.com/kcp-dev/kcp/pull/928
    • e2e test transparent SA rewrite in downstream deployment by @geoberle in https://github.com/kcp-dev/kcp/pull/1044
    • Adds virtualworkspaceurls-controller by @jmprusi in https://github.com/kcp-dev/kcp/pull/1018
    • Add the WorkloadCluster name to the current context in the syncer virtual workspace by @davidfestal in https://github.com/kcp-dev/kcp/pull/1065
    • ci: Config author for commit to gitops repo by @kylape in https://github.com/kcp-dev/kcp/pull/1079
    • Avoid trying to sync namespaces as namespaced resources. by @davidfestal in https://github.com/kcp-dev/kcp/pull/1091
    • admission: make api binding mutating admission work by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1080
    • test/e2e: quiet down spammy log messages by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1093
    • apibinding: remove initializers by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1095
    • pkg/server: add workspace annotation by @ibihim in https://github.com/kcp-dev/kcp/pull/1042
    • add initial revision of FAQ by @pweil- in https://github.com/kcp-dev/kcp/pull/1045
    • test/e2e: quiet down more spam by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1094
    • Fix make test-e2e WHAT so that it works by using WHAT-TESTS by @chrisahl in https://github.com/kcp-dev/kcp/pull/1099
    • virtual: factor label selector injection out by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1055
    • Add break when cluster found by @itdove in https://github.com/kcp-dev/kcp/pull/1106
    • virtual: expose fields in internal api struct by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1107
    • admission: add a mutating webhook for clusterworkspaces by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1081
    • Apply audit config to server by @kylape in https://github.com/kcp-dev/kcp/pull/1109
    • Wire syncer to the virtual workspace by @davidfestal in https://github.com/kcp-dev/kcp/pull/1067
    • test: stop using require.Equal for composite objects by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1102
    • Deflake namespace reconciler e2e by @ncdc in https://github.com/kcp-dev/kcp/pull/1114
    • ci: Wrap commit ID in quotes by @kylape in https://github.com/kcp-dev/kcp/pull/1115
    • Bump kcp-dev/kubernetes dependency by @fabianvf in https://github.com/kcp-dev/kcp/pull/1112
    • Support APIExport identity in the Syncer virtual workspace by @davidfestal in https://github.com/kcp-dev/kcp/pull/1111
    • Sync from multiple workspaces by @davidfestal in https://github.com/kcp-dev/kcp/pull/927
    • Split workloads/namespace controller in namespace and resources controllers by @sttts in https://github.com/kcp-dev/kcp/pull/1108
    • Makefile: fix WHAT for test-e2e by @sttts in https://github.com/kcp-dev/kcp/pull/1117
    • reconciler/workloads/apiexport: fix missing byWorkspace index for exports by @sttts in https://github.com/kcp-dev/kcp/pull/1118
    • e2e: print failing server log with newlines by @sttts in https://github.com/kcp-dev/kcp/pull/1120
    • apis/workloads: move scheduling labels here by @sttts in https://github.com/kcp-dev/kcp/pull/1119
    • reconciler/workloads/apiexport: don't stomp all APIExport, but only those named 'kubernetes' by @sttts in https://github.com/kcp-dev/kcp/pull/1121
    • forbid resource creation when APIBinding is deleting by @qiujian16 in https://github.com/kcp-dev/kcp/pull/1043
    • Delete custom resources when apibinding is deleted by @qiujian16 in https://github.com/kcp-dev/kcp/pull/1040
    • Don't sync ServiceAccounts by default by @jmprusi in https://github.com/kcp-dev/kcp/pull/1123
    • Fix typo in goals.md by @pavolloffay in https://github.com/kcp-dev/kcp/pull/1122
    • api: Enables the binding of APIs in protected groups by @astefanutti in https://github.com/kcp-dev/kcp/pull/1104
    • hack: Remove conflicting bash flag by @rgolangh in https://github.com/kcp-dev/kcp/pull/1126
    • virtualworkspace: inspect available verbs from storage by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1101
    • hack: check for missing parameters correctly by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1128
    • virtual: fix an error by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1129
    • virtual: snip dependency on CRD storage builder by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1110
    • Makefile: fix build-all target for GNU make by @sttts in https://github.com/kcp-dev/kcp/pull/1131
    • apiresourceimport: fix cache mutation by @ncdc in https://github.com/kcp-dev/kcp/pull/1133
    • Propagate api-approved.kubernetes.io annotation from pcluster upwards by @sttts in https://github.com/kcp-dev/kcp/pull/1135
    • Fix wildcard partial metadata list/watch requests by @ncdc in https://github.com/kcp-dev/kcp/pull/1082
    • e2e/virtual: remove disabled and outdated framework test by @sttts in https://github.com/kcp-dev/kcp/pull/1136
    • *: shorten initializer names by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1137
    • Filter out workspaces type from workspace content deletor by @kylape in https://github.com/kcp-dev/kcp/pull/1143
    • reconciler/namespace: implement location API MVP by @sttts in https://github.com/kcp-dev/kcp/pull/1084
    • reconciler: clusterworkspace: enforce labels by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1140
    • pkg/server: add audit annotation init by @ibihim in https://github.com/kcp-dev/kcp/pull/1124
    • remove getting cluster name from object meta by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/1146
    • virtual: ignore requests without clusters/ suffix by @sttts in https://github.com/kcp-dev/kcp/pull/1144
    • e2e-shared-server: stop running 2x by @ncdc in https://github.com/kcp-dev/kcp/pull/1147
    • Adding apibinding authorizer to allow service bindings ability to limit access to exported resources by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/1078
    • APIExport Virtual API Server by @sttts in https://github.com/kcp-dev/kcp/pull/1132
    • makefile: update things to be consistent & simple by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1148
    • Recreate downstream resource by @itdove in https://github.com/kcp-dev/kcp/pull/1046
    • apis/bindings: allow absolute workspace references by @sttts in https://github.com/kcp-dev/kcp/pull/1125
    • tenancy: improve initializer label mechanism by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1152
    • document kubebuilder validations by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1153
    • virtual: fix internalapi APIResourceSchema version by @sttts in https://github.com/kcp-dev/kcp/pull/1150
    • virtual: update some names in a test for clarity by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1154
    • make: use gotestsum for tests by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1156
    • Better error when failing to create a sub workspace by @rgolangh in https://github.com/kcp-dev/kcp/pull/1145
    • Set APIExport.status.virtualWorkspaceURLs by @ncdc in https://github.com/kcp-dev/kcp/pull/1155
    • *: bootstrap some items for CI by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1160
    • make: add a target for all of our tools by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1161
    • e2e/virtual: use normal test args for standalone test by @sttts in https://github.com/kcp-dev/kcp/pull/1162
    • make: fix a copy-pasta error by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1164
    • e2e/framework: set klog verbosity 2 by @sttts in https://github.com/kcp-dev/kcp/pull/1166
    • reconciler/clusterworkspace: fix cache mutation by @sttts in https://github.com/kcp-dev/kcp/pull/1167
    • makefile: update path to include output binaries by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1171
    • virtual: add initializingworkspaces endpoint by @stevekuznetsov in https://github.com/kcp-dev/kcp/pull/1141
    • Add kubectl kcp crd snapshot command by @ncdc in https://github.com/kcp-dev/kcp/pull/1009
    • Do not use context.WithValue directly for the VirtualWorkspace name. by @davidfestal in https://github.com/kcp-dev/kcp/pull/1179
    • Rework virtual workspace root api server handler chain by @davidfestal in https://github.com/kcp-dev/kcp/pull/1180
    • e2e: fix kcp server shutdown/waiting by @ncdc in https://github.com/kcp-dev/kcp/pull/1178
    • Syncer: Deployment Mutator use the full secret name instead of a hardcoded one by @jmprusi in https://github.com/kcp-dev/kcp/pull/1127

    New Contributors

    • @itdove made their first contribution in https://github.com/kcp-dev/kcp/pull/974
    • @fabianvf made their first contribution in https://github.com/kcp-dev/kcp/pull/1002
    • @robinbobbitt made their first contribution in https://github.com/kcp-dev/kcp/pull/1006
    • @micahhausler made their first contribution in https://github.com/kcp-dev/kcp/pull/1020
    • @chrisahl made their first contribution in https://github.com/kcp-dev/kcp/pull/1005
    • @ibihim made their first contribution in https://github.com/kcp-dev/kcp/pull/1042
    • @pweil- made their first contribution in https://github.com/kcp-dev/kcp/pull/1045
    • @pavolloffay made their first contribution in https://github.com/kcp-dev/kcp/pull/1122
    • @rgolangh made their first contribution in https://github.com/kcp-dev/kcp/pull/1126

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.4.0-alpha.0...v0.5.0-alpha.1

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0-alpha.0(May 3, 2022)

    What's Changed

    • manifest: Add explicit port number to external hostname by @kylape in https://github.com/kcp-dev/kcp/pull/819
    • Enable CI/CD for release branches by @kylape in https://github.com/kcp-dev/kcp/pull/822
    • kubectl-kcp: fix user-agent regression by @sttts in https://github.com/kcp-dev/kcp/pull/824
    • pkg/gvk: remove by @sttts in https://github.com/kcp-dev/kcp/pull/825
    • kubectl-kcp: add --short to current command for use in prompt by @sttts in https://github.com/kcp-dev/kcp/pull/826
    • tenancy: clean up ClusterWorkspaceShard type by @sttts in https://github.com/kcp-dev/kcp/pull/827
    • Referencing k8s CRB by workspace admins by @slaskawi in https://github.com/kcp-dev/kcp/pull/762
    • dockerfile: Use make to build go binaries by @kylape in https://github.com/kcp-dev/kcp/pull/850
    • Ignore missing namespace on p-cluster by @csams in https://github.com/kcp-dev/kcp/pull/851
    • Fix git version string returned by kcp server by @kylape in https://github.com/kcp-dev/kcp/pull/859
    • virtual: Grant 'access' verb to user upon workspace creation by @kylape in https://github.com/kcp-dev/kcp/pull/858
    • workaround for #730: API import does not work when adding the same cluster into multiple workspaces by @fgiloux in https://github.com/kcp-dev/kcp/pull/856
    • actions: add Github's beta add-to-project by @sttts in https://github.com/kcp-dev/kcp/pull/866
    • actions/add-to-project: set environment to projects by @sttts in https://github.com/kcp-dev/kcp/pull/868
    • e2e Syncer fixture by @jmprusi in https://github.com/kcp-dev/kcp/pull/861
    • manifest: add resources to sync by @ncdc in https://github.com/kcp-dev/kcp/pull/871
    • Stop apiimporter, syncer, heartbeat from fighting over the Ready condition by @csams in https://github.com/kcp-dev/kcp/pull/864
    • Update namespace scheduler to enqueue resources on scheduling change by @marun in https://github.com/kcp-dev/kcp/pull/749
    • tenancy: Increase ClusterWorkspace name max length to 63 characters by @astefanutti in https://github.com/kcp-dev/kcp/pull/834
    • reconcilers: move apis.kcp.dev controllers into sub-dir by @sttts in https://github.com/kcp-dev/kcp/pull/847
    • Add clustername to apiimporter manager, syncer manager, and namespace reconciler logs by @csams in https://github.com/kcp-dev/kcp/pull/874
    • server: Set external address based on completed serving config by @astefanutti in https://github.com/kcp-dev/kcp/pull/855
    • Move api importer to the syncer by @marun in https://github.com/kcp-dev/kcp/pull/810
    • virtual: Disable workspace deletion for now by @kylape in https://github.com/kcp-dev/kcp/pull/880
    • manifest: set --v=2 by @ncdc in https://github.com/kcp-dev/kcp/pull/885
    • specsyncer: fix when logging namespace creation by @ncdc in https://github.com/kcp-dev/kcp/pull/884
    • syncer: add more details to log messages by @ncdc in https://github.com/kcp-dev/kcp/pull/886
    • syncer: fix logging (Info->Infof) by @ncdc in https://github.com/kcp-dev/kcp/pull/888
    • Disable deploy pipeline on release branch by @kylape in https://github.com/kcp-dev/kcp/pull/882
    • Apply resource constraints to kcp instance by @kylape in https://github.com/kcp-dev/kcp/pull/863
    • Check out code in deploy job by @kylape in https://github.com/kcp-dev/kcp/pull/892
    • Remove the global config embedding. by @jpeach in https://github.com/kcp-dev/kcp/pull/894
    • Remove stty dependency. by @jpeach in https://github.com/kcp-dev/kcp/pull/895
    • Replace managed syncer with deployed syncer by @marun in https://github.com/kcp-dev/kcp/pull/881
    • e2e: Enable testing against a deployed syncer with kind by @marun in https://github.com/kcp-dev/kcp/pull/909
    • Delete sync managers (replaced by deployed syncers) by @marun in https://github.com/kcp-dev/kcp/pull/911
    • e2e/authorizer: make test idem-potent for COUNT > 1 by @sttts in https://github.com/kcp-dev/kcp/pull/921
    • update / fix development guide by @xrstf in https://github.com/kcp-dev/kcp/pull/918
    • Add e2e-shared-server task to ci-docs-only flow by @kylape in https://github.com/kcp-dev/kcp/pull/924
    • apibindings: check for conflicts, refactor controller by @ncdc in https://github.com/kcp-dev/kcp/pull/823
    • docs: add virtual-workspaces.md by @sttts in https://github.com/kcp-dev/kcp/pull/926
    • Upgrade openshift-goimports. by @jpeach in https://github.com/kcp-dev/kcp/pull/929
    • cli/workload: fix "Use" string by @sttts in https://github.com/kcp-dev/kcp/pull/931
    • cmd/kcp: add --feature-gates flag by @sttts in https://github.com/kcp-dev/kcp/pull/930
    • server: fix --features-gates typo by @sttts in https://github.com/kcp-dev/kcp/pull/936
    • Ensure the kcp config root has reasonable permissions. by @jpeach in https://github.com/kcp-dev/kcp/pull/908
    • apis/tenancy: add validation to (Cluster)Workspace.spec.type by @sttts in https://github.com/kcp-dev/kcp/pull/935
    • apis: non-pointer subresources in APIResourceSchema for easier equality by @sttts in https://github.com/kcp-dev/kcp/pull/938
    • apis: allow APIResourceSchemas with single word groups used by kube by @sttts in https://github.com/kcp-dev/kcp/pull/937
    • Add branch name to the tag list of kcp and syncer images by @fgiloux in https://github.com/kcp-dev/kcp/pull/887
    • delete resources in workspace when workspace is deleted by @qiujian16 in https://github.com/kcp-dev/kcp/pull/913
    • Revert "virtual: Disable workspace deletion for now" by @sttts in https://github.com/kcp-dev/kcp/pull/939
    • apis: add scheduling.kcp.dev/v1alpha1 API by @sttts in https://github.com/kcp-dev/kcp/pull/829
    • Enabling Validating and Mutating Webhook's for KCP by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/818
    • e2e/syncer: check deployment available independently and output yaml by @sttts in https://github.com/kcp-dev/kcp/pull/949
    • CONTRIBUTING.md: add feature-gates by @sttts in https://github.com/kcp-dev/kcp/pull/951
    • Add APIExport controller by @ncdc in https://github.com/kcp-dev/kcp/pull/877
    • ci: make artifact names unique by @ncdc in https://github.com/kcp-dev/kcp/pull/954
    • e2e: create syncer log artifacts when running in kind by @sttts in https://github.com/kcp-dev/kcp/pull/952
    • Adding admission plugin to validate CRDs by @shawn-hurley in https://github.com/kcp-dev/kcp/pull/901
    • syncer: don't sync standard resources twice by @sttts in https://github.com/kcp-dev/kcp/pull/956
    • e2e: only collect syncer logs for deployed syncer by @sttts in https://github.com/kcp-dev/kcp/pull/957
    • ci: use cytopia/upload-artifact-retry-action to survive transient errors by @sttts in https://github.com/kcp-dev/kcp/pull/960
    • e2e/syncer: stop (some of) the bleeding by @sttts in https://github.com/kcp-dev/kcp/pull/959
    • fix syncer image name by @geoberle in https://github.com/kcp-dev/kcp/pull/953
    • workloads: make --auto-publish-apis default to on by @sttts in https://github.com/kcp-dev/kcp/pull/961

    New Contributors

    • @jpeach made their first contribution in https://github.com/kcp-dev/kcp/pull/894
    • @xrstf made their first contribution in https://github.com/kcp-dev/kcp/pull/918
    • @qiujian16 made their first contribution in https://github.com/kcp-dev/kcp/pull/913
    • @geoberle made their first contribution in https://github.com/kcp-dev/kcp/pull/953

    Full Changelog: https://github.com/kcp-dev/kcp/compare/v0.3.0-beta.1...v0.4.0-alpha.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0-beta.1(Apr 1, 2022)

    What's Changed

    • Implement root workspace and organization workspaces by @sttts in https://github.com/kcp-dev/kcp/pull/508
    • Add a label to deactivate automatic namespace scheduling by @astefanutti in https://github.com/kcp-dev/kcp/pull/537
    • e2e: Ensure cfg is written to temp dir for virtual workspace test by @marun in https://github.com/kcp-dev/kcp/pull/585
    • e2e: Remove scheduler dependency on controller patch method by @marun in https://github.com/kcp-dev/kcp/pull/586
    • Refactor namespace scheduler queueing behavior for testability by @marun in https://github.com/kcp-dev/kcp/pull/587
    • ci: don't run e2e & other tests for documentation-only PRs by @avinal in https://github.com/kcp-dev/kcp/pull/589
    • Rename namespace scheduler labels (kcp.dev -> workloads.kcp.dev) by @marun in https://github.com/kcp-dev/kcp/pull/593
    • Add epic template, update CONTRIBUTING by @ncdc in https://github.com/kcp-dev/kcp/pull/594
    • kube: back to upstream (dd0f1685f84) by @ncdc in https://github.com/kcp-dev/kcp/pull/599
    • Generators outside gopath by @ncdc in https://github.com/kcp-dev/kcp/pull/533
    • refactor: remove syncChecks in controllers by @ReToCode in https://github.com/kcp-dev/kcp/pull/579
    • Refactor namespace scheduler cluster assignment for testability by @marun in https://github.com/kcp-dev/kcp/pull/559
    • Add .github/ISSUE_TEMPLATE/* to paths to ignore for CI by @avinal in https://github.com/kcp-dev/kcp/pull/603
    • Refactor namespace scheduler status maintenance for testability by @marun in https://github.com/kcp-dev/kcp/pull/592
    • Add workspace invariant of valid baseURL by @sttts in https://github.com/kcp-dev/kcp/pull/582
    • Ensure consistent logging of resource names (s+%q|%q/%q+%s|%s/%s+) by @marun in https://github.com/kcp-dev/kcp/pull/600
    • e2e: Cleanup namespace scheduler e2e in light of unit-test additions by @marun in https://github.com/kcp-dev/kcp/pull/598
    • Rename the Cluster type and its group for clarity by @marun in https://github.com/kcp-dev/kcp/pull/605
    • admission: simplify informer sync in ClusterWorkspaceTypeExists by @sttts in https://github.com/kcp-dev/kcp/pull/609
    • admission: add SubjectAccessReview to ClusterWorkspaceType use by @sttts in https://github.com/kcp-dev/kcp/pull/611
    • Document ClusterWorkspaceType authz by @sttts in https://github.com/kcp-dev/kcp/pull/612
    • e2e: Fix broken workspacetype initializer test by @marun in https://github.com/kcp-dev/kcp/pull/616
    • README clarifications by @ncdc in https://github.com/kcp-dev/kcp/pull/576
    • admission: add ClusterWorkspaceType plugin to reserve organization type for root by @sttts in https://github.com/kcp-dev/kcp/pull/608
    • Set up deploy pipeline using Github Actions by @kylape in https://github.com/kcp-dev/kcp/pull/483
    • apis: add APIExport/Binding/ResourceSchema types by @sttts in https://github.com/kcp-dev/kcp/pull/583
    • clusterworkspace: admission: fix initializers check by @ncdc in https://github.com/kcp-dev/kcp/pull/629
    • Remove workloadclusters, apiresourceimports, negotiatedapiresources from root and org workspaces by @sttts in https://github.com/kcp-dev/kcp/pull/619
    • Rename workspaces to clusterworkspaces by @slaskawi in https://github.com/kcp-dev/kcp/pull/639
    • kubectl-kcp: add ws alias for workspace by @jbpratt in https://github.com/kcp-dev/kcp/pull/637
    • Adapt personal workspaces to orgs by @davidfestal in https://github.com/kcp-dev/kcp/pull/613
    • e2e: Enable use of persistent server fixture by @marun in https://github.com/kcp-dev/kcp/pull/614
    • config/organization: fix clusterrolebindings by @sttts in https://github.com/kcp-dev/kcp/pull/646
    • Increase V log level for resources the DynamicDiscoverySharedInformerFactory can't list+watch by @pradeepnnv in https://github.com/kcp-dev/kcp/pull/652
    • e2e: Switch to DefaultConfig() function from Config("system:admin") by @marun in https://github.com/kcp-dev/kcp/pull/650
    • e2e: Remove unused constant to satisfy linter by @marun in https://github.com/kcp-dev/kcp/pull/660
    • Move TEST_ARGS for make test-e2e to after the package list by @marun in https://github.com/kcp-dev/kcp/pull/649
    • ci: use lint make target by @jbpratt in https://github.com/kcp-dev/kcp/pull/635
    • make signal handling consistent by @RAMESSESII2 in https://github.com/kcp-dev/kcp/pull/615
    • kubectl-kcp: fix logic to derive the orgClusterName by @sttts in https://github.com/kcp-dev/kcp/pull/663
    • Rbac for orgs in virtual workspaces by @davidfestal in https://github.com/kcp-dev/kcp/pull/648
    • bootstrap: support create-only resources by @ncdc in https://github.com/kcp-dev/kcp/pull/675
    • virtual-workspaces: wire into kcp server and remove topology leaking to cli plugin by @sttts in https://github.com/kcp-dev/kcp/pull/640
    • Better scope management and CLI plugin cleanup by @davidfestal in https://github.com/kcp-dev/kcp/pull/673
    • disable etcd fsync on github actions tests, fail fast if kcp binary not found and increase kcp verbosity by @aojea in https://github.com/kcp-dev/kcp/pull/656
    • kubectl-kcp: readd parent logic dropped in rebase by @sttts in https://github.com/kcp-dev/kcp/pull/677
    • prototype2-script: adapting the script to org workspaces by @sttts in https://github.com/kcp-dev/kcp/pull/578
    • Handle name transformation to avoid default object conflicts by @jmprusi in https://github.com/kcp-dev/kcp/pull/679
    • prototype2-script: Fix virtual-workspace-address option to start KCP by @astefanutti in https://github.com/kcp-dev/kcp/pull/683
    • server: add --experimental-bind-free-port by @sttts in https://github.com/kcp-dev/kcp/pull/666
    • Update deployment manifest by @kylape in https://github.com/kcp-dev/kcp/pull/682
    • Rename Github Actions step to avoid conflict by @kylape in https://github.com/kcp-dev/kcp/pull/689
    • Add DCO information by @ncdc in https://github.com/kcp-dev/kcp/pull/669
    • prototype2-script: the Ingress demo can run on MacOS by @astefanutti in https://github.com/kcp-dev/kcp/pull/584
    • Wildcard cluster authorization test by @slaskawi in https://github.com/kcp-dev/kcp/pull/664
    • Fix resource bootstrapping flake by @aojea in https://github.com/kcp-dev/kcp/pull/672
    • config/universal: create default namespace by default by @sttts in https://github.com/kcp-dev/kcp/pull/691
    • e2e/workspace: fix flake by quorum read shard before moving to initializing by @sttts in https://github.com/kcp-dev/kcp/pull/700
    • e2e/virtual: fix races due to stale authz informers by @sttts in https://github.com/kcp-dev/kcp/pull/703
    • e2e: Pass t to DefaultConfig() to allow failing on error by @marun in https://github.com/kcp-dev/kcp/pull/694
    • e2e/virtual: fix flake failing on not true WorkspaceShardValid condition by @sttts in https://github.com/kcp-dev/kcp/pull/705
    • apis/apiresource: fix subresource panic by @sttts in https://github.com/kcp-dev/kcp/pull/699
    • Link Github projects board from CONTRIBUTING.md by @sttts in https://github.com/kcp-dev/kcp/pull/706
    • Start service account controller and enable legacy+bound service account token authn+authz by @sttts in https://github.com/kcp-dev/kcp/pull/681
    • Add CICD options to kubectl for external hostname discovery by @csams in https://github.com/kcp-dev/kcp/pull/697
    • Convert cmd/syncer/main.go to be a cobra.Command by @RAMESSESII2 in https://github.com/kcp-dev/kcp/pull/601
    • contrib/prototype3: start demo script by @sttts in https://github.com/kcp-dev/kcp/pull/704
    • e2e: Update authorizer testing to use shared fixture by @marun in https://github.com/kcp-dev/kcp/pull/698
    • kcp terminology doc by @pkprzekwas in https://github.com/kcp-dev/kcp/pull/684
    • admission: move to runtime.DefaultUnstructuredConverter by @sttts in https://github.com/kcp-dev/kcp/pull/577
    • reconcilers: get rid of clientcmdapi.Config and pass rest.Config by @sttts in https://github.com/kcp-dev/kcp/pull/711
    • Enable the RootCACertPublisher by @jmprusi in https://github.com/kcp-dev/kcp/pull/667
    • kubectl-kcp: point to authInfo config instead of clone by @kylape in https://github.com/kcp-dev/kcp/pull/686
    • Proxy to terminate TLS and handle client cert auth by @csams in https://github.com/kcp-dev/kcp/pull/659
    • [kcp-plugin] add org name to kubectl-kcp ws use|current output by @varshaprasad96 in https://github.com/kcp-dev/kcp/pull/693
    • README.md: Adds the prototype2 demo screencast by @jmprusi in https://github.com/kcp-dev/kcp/pull/626
    • apis/apibinding: make reference required by @sttts in https://github.com/kcp-dev/kcp/pull/713
    • apibinding: add admission by @ncdc in https://github.com/kcp-dev/kcp/pull/653
    • reconcilers: add user-agent to all controller clients by @sttts in https://github.com/kcp-dev/kcp/pull/712
    • Support adding labels to workspace on creation by @marun in https://github.com/kcp-dev/kcp/pull/710
    • Fix TestClusterController tests by @jmprusi in https://github.com/kcp-dev/kcp/pull/722
    • Make namespace scheduling opt-in via label on containing workspace by @marun in https://github.com/kcp-dev/kcp/pull/695
    • Adds serviceaccounts,secrets and configmaps GVRs to the default Syncer sync list by @jmprusi in https://github.com/kcp-dev/kcp/pull/680
    • to-kubeconfig is not required, if used InCluster is not set by @aojea in https://github.com/kcp-dev/kcp/pull/733
    • instructions to install a syncer on a pcluster by @aojea in https://github.com/kcp-dev/kcp/pull/723
    • go get was deprecated and no longer works with 1.18 by @aojea in https://github.com/kcp-dev/kcp/pull/690
    • apis/apiexports: remove status.resourceSchemasInUse by @sttts in https://github.com/kcp-dev/kcp/pull/732
    • Add initial controller developer docs by @ncdc in https://github.com/kcp-dev/kcp/pull/734
    • e2e: Update workspace shard tests to use shared fixture by @marun in https://github.com/kcp-dev/kcp/pull/736
    • fix unknown command options for kcp by @UtkarshChaurasia in https://github.com/kcp-dev/kcp/pull/737
    • kcp-front-proxy: implement options pattern by @sttts in https://github.com/kcp-dev/kcp/pull/715
    • return error on context cancellation by @aojea in https://github.com/kcp-dev/kcp/pull/692
    • Update WorkspaceKey to panic for org+ws without ClusterWorkspace by @marun in https://github.com/kcp-dev/kcp/pull/735
    • e2e: Update compatible workspace test to use shared fixture by @marun in https://github.com/kcp-dev/kcp/pull/742
    • syncer: don't default resources to sync by @aojea in https://github.com/kcp-dev/kcp/pull/745
    • Strip finalizers and owner references before syncing downstream by @astefanutti in https://github.com/kcp-dev/kcp/pull/534
    • virtual: authorize clusterworkspacetype use by @sttts in https://github.com/kcp-dev/kcp/pull/718
    • e2e: Switch to test-managed syncer and update syncer-dependent tests to use shared fixture by @marun in https://github.com/kcp-dev/kcp/pull/636
    • e2e: Convert the virtual workspace test to shared fixture by @marun in https://github.com/kcp-dev/kcp/pull/651
    • Add logging options to virtual workspaces server by @csams in https://github.com/kcp-dev/kcp/pull/746
    • Remove view and edit verbs from clusterworkspace authz by @slaskawi in https://github.com/kcp-dev/kcp/pull/726
    • e2e: Cleanup context use by @marun in https://github.com/kcp-dev/kcp/pull/658
    • Simplify kubectl kcp workspace plugin usage and implementation by @davidfestal in https://github.com/kcp-dev/kcp/pull/720
    • crd bootstrap: better goroutine support by @ncdc in https://github.com/kcp-dev/kcp/pull/747
    • kube client cert auth in the proxy by @csams in https://github.com/kcp-dev/kcp/pull/740
    • e2e: add LOG_TO_CONSOLE to enable fixture logging by @sttts in https://github.com/kcp-dev/kcp/pull/757
    • Cluster heartbeat controller by @imjasonh in https://github.com/kcp-dev/kcp/pull/738
    • reconciler/namespace: wire metadata client and allow differing schemas for PartialObjectMetadata wildcard requests by @sttts in https://github.com/kcp-dev/kcp/pull/765
    • kubectl-kcp: add create --type flag by @sttts in https://github.com/kcp-dev/kcp/pull/767
    • reconcilers: cleanup workload controller packages by @sttts in https://github.com/kcp-dev/kcp/pull/768
    • reconcilers: cleanup tenancy controller packages by @sttts in https://github.com/kcp-dev/kcp/pull/769
    • reconciler/cluster: fix queue type cast panic by @sttts in https://github.com/kcp-dev/kcp/pull/770
    • informer: fix data race by @sttts in https://github.com/kcp-dev/kcp/pull/771
    • Make Pods from Synced Deployments in a pCluster connect to KCP when using inCluster config. by @jmprusi in https://github.com/kcp-dev/kcp/pull/670
    • Add APIBinding controller, replace inheritFrom with APIBindings by @sttts in https://github.com/kcp-dev/kcp/pull/755
    • e2e: unify make-build bin/ dir and e2e search path for binaries by @sttts in https://github.com/kcp-dev/kcp/pull/766
    • authorization: finish removing edit+view from workspace content authz by @sttts in https://github.com/kcp-dev/kcp/pull/776
    • Ensure cluster readiness is determined by syncer heartbeat by @marun in https://github.com/kcp-dev/kcp/pull/773
      1. authorization: don't leak authz information in authz errors by @sttts in https://github.com/kcp-dev/kcp/pull/781
      1. ingress-controller: fix race leading to too many leaves when informers are stale by @sttts in https://github.com/kcp-dev/kcp/pull/784
      1. Plumb LogicalCluster type through and generalize lcluster logic by @sttts in https://github.com/kcp-dev/kcp/pull/744
    • authorization: give everybody authenticated root org access by @sttts in https://github.com/kcp-dev/kcp/pull/785
      1. virtual: implement full generalized logical cluster support and prepare for sharding by @sttts in https://github.com/kcp-dev/kcp/pull/780
    • e2e: Add new shared server ci job by @marun in https://github.com/kcp-dev/kcp/pull/777
    • server: send warning header to client on /clusters/: access by @sttts in https://github.com/kcp-dev/kcp/pull/787
      1. authorization: add top-level org authorizer by @sttts in https://github.com/kcp-dev/kcp/pull/782
    • Fix misspell words by @ArangoGutierrez in https://github.com/kcp-dev/kcp/pull/783
    • kubectl-kcp+server: set user-agent and version information by @sttts in https://github.com/kcp-dev/kcp/pull/788
    • virtual: add warning header with old kubectl plugin by @sttts in https://github.com/kcp-dev/kcp/pull/789
    • e2e: Use ./bin/kcp instead of finding it from the path by @marun in https://github.com/kcp-dev/kcp/pull/791
    • Update manifest to persist KCP configs between restarts by @kylape in https://github.com/kcp-dev/kcp/pull/792
    • e2e: cleanup misleading log output from apibinding test by @marun in https://github.com/kcp-dev/kcp/pull/794
    • e2e: run via go-run by default, NO_GORUN=1 for opt-out from Makefile by @marun in https://github.com/kcp-dev/kcp/pull/797
    • e2e: Add a command to start a kcp server compatible with e2e testing by @marun in https://github.com/kcp-dev/kcp/pull/795
    • e2e: Update shared-server job to run twice by @marun in https://github.com/kcp-dev/kcp/pull/790
    • Add .dockerignore file to exclude cmd/test-server from image build by @marun in https://github.com/kcp-dev/kcp/pull/800
    • Allow optional port on --external-hostname by @kylape in https://github.com/kcp-dev/kcp/pull/801
    • e2e: Add --use-default-server to simplify use of persistent fixture by @marun in https://github.com/kcp-dev/kcp/pull/804
    • gh-actions: Fix relative path of kubectl command by @kylape in https://github.com/kcp-dev/kcp/pull/807
    • e2e: Run e2e against shared server only a single time. by @marun in https://github.com/kcp-dev/kcp/pull/809
    • e2e: Update ingress testing to use go run by default by @marun in https://github.com/kcp-dev/kcp/pull/806
    • e2e: Update cross logical cluster testing to use private fixture by @marun in https://github.com/kcp-dev/kcp/pull/811
    • push-mode syncer uses localhost for KCP by @csams in https://github.com/kcp-dev/kcp/pull/814
      1. kubectl-kcp: get rid of workspace duality and implement logical cluster path semantics by @sttts in https://github.com/kcp-dev/kcp/pull/778
    • kubectl-kcp: wait for workspace to show up in personal virtual workspace by @sttts in https://github.com/kcp-dev/kcp/pull/815
    • Add demo script for cordon and evict behavior by @imjasonh in https://github.com/kcp-dev/kcp/pull/774
      1. kubectl-kcp: add create-context command by @sttts in https://github.com/kcp-dev/kcp/pull/779
    • apibinding demo by @sttts in https://github.com/kcp-dev/kcp/pull/763

    Full Changelog: https://github.com/kcp-dev/kcp/commits/v0.3.0-beta.1

    Source code(tar.gz)
    Source code(zip)
Prototype of Future Kubernetes Ideas
A place to explore and prototype extending Kubernetes in novel directions
Prototype of Future Kubernetes Ideas
Netkit - A type parameter(generics) net kit, support tcp kcp, customize packet

Netkit Netkit is a type parameter(generics) golang package Get Started Need Go i

null 1 Jan 12, 2022
x-crafter is used to quickly create templates from your prototype, also come with a builder to quickly regenerate your code

XCrafter ?? x-crafter is used to quickly create templates from your prototype, also come with a builder to quickly regenerate your code. Install Using

Chi-Tai Vong 3 Nov 29, 2021
httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.

Features • Installation • Usage • Running httpx • Notes • Join Discord httpx is a fast and multi-purpose HTTP toolkit allow to run multiple probers us

ProjectDiscovery 3.6k Aug 16, 2022
This project provides fully automated one-click experience to create Cloud and Kubernetes environment to run Data Analytics workload like Apache Spark.

Introduction This project provides a fully automated one-click tool to create Data Analytics platform in Cloud and Kubernetes environment: Single scri

DataPunch - One Click to Create Cloud and Kubernetes Environment for Data Analytics and Apache Spark 41 Jul 22, 2022
A (attempt to create a) multiversion gophertunnel proxy to join the latest MC version without renderdragon

draco a multiversion gophertunnel proxy to join the latest MC version without renderdragon Purpose mojang can't seem to actually make a good update to

null 9 Aug 4, 2022
ETH <-> XMR atomic swap prototype

ETH-XMR Atomic Swaps This is a prototype of ETH<->XMR atomic swaps, which was worked on during ETHLisbon. Instructions Start ganache-cli with determin

null 134 Aug 2, 2022
A prototype of a plugin system in Go using syscalls (execve)

Talking binaries Creating a viable plugin system in Go is challenging. Some avenues (and architectural examples) I considered are: go-plugin Go plugin

Matt Ouille 0 Jan 24, 2022
Hetzner-dns-updater - A simple tool to update a DNS record via Hetzner DNS API. Used for simple HA together with Nomad

hetzner-dns-updater A small utility tool to update a single record via Hetzner D

Patrick Pacher 0 Feb 12, 2022
WebDAV server for SSH. Similar to sshfs but does not require proprietary MacFUSE on macOS

sshwebdav: WebDAV server for SSH sshwebdav provides a WebDAV server for a remote SSH host. sshwebdav is similar to sshfs but does not require propriet

Linux Machines 22 Aug 6, 2022
Get subdomain list and check whether they are active or not by each response code. Using API by c99.nl

getsubdomain Get subdomain list and check whether they are active or not by each response code. Using API by c99.nl Installation ▶ go install github.c

Akbar Kustirama 9 Apr 30, 2022
A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.

Realtime API Gateway Synchronize Your Clients Visit Resgate.io for guides, live demos, and resources. Resgate is a Go project implementing a realtime

Resgate.io - Synchronize Your Clients 585 Aug 1, 2022
Develop, update, and restart your ESP32 applications in less than two seconds

Jaguar Develop, update, and restart your ESP32 applications in less than two seconds. Use the really fast development cycle to iterate quickly and lea

Toit language 51 Aug 3, 2022
Dummy - HTTP server for testing cluster deployments

dummy HTTP server for testing cluster deployments. Very small container image fo

Sam Leavens 0 Feb 17, 2022
Local development against a remote Kubernetes or OpenShift cluster

Documentation - start here! ** Note: Telepresence 1 is being replaced by our even better Telepresence 2. Please try Telepresence 2 first and report an

Telepresence 5.2k Aug 11, 2022
K8s_dns_chaos: enables inject DNS chaos in a Kubernetes cluster for Chaos Engineering

k8s_dns_chaos Name k8s_dns_chaos - enables inject DNS chaos in a Kubernetes cluster for Chaos Engineering. Description This plugin implements the Kube

邢凯 0 Dec 12, 2021
Super fault-tolerant gateway for HTTP clusters, written in Go. White paper for reference - https://github.com/gptankit/serviceq-paper

ServiceQ ServiceQ is a fault-tolerant gateway for HTTP clusters. It employs probabilistic routing to distribute load during partial cluster shutdown (

Ankit Gupta 66 Jul 16, 2022
dynflare is a tool to automatically update dns records at Cloudflare, when the ip changes.

dynflare dynflare is a tool to automatically update dns records at Cloudflare, when the ip changes. How it works The current ips are determined by ask

Lukas Dietrich 0 Dec 7, 2021
Automatically update your Windows hosts file with the WSL2 VM IP address

Automatically update your Windows hosts file with the WSL2 VM IP address

null 1.3k Aug 8, 2022
Use DDNS to Update a Cloudflare Spectrum Application's IP Address

Cloudflare Spectrum DDNS NOTICE - PROJECT IS A WORK IN PROGRESS Cloudflare Spectrum's functionality is limited to specifying IP addresses for SSH and

Connor McKelvey 1 Feb 1, 2022