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

Merge POC branch into main #4

Merged
merged 22 commits into from
Jan 2, 2025
Merged

Merge POC branch into main #4

merged 22 commits into from
Jan 2, 2025

Conversation

joshlreese
Copy link
Contributor

As discussed, we'll be iterating in the main branch more quickly until we reach a point that we're ready to tag a release. That will occur after we've confirmed the direction of this project and harden it for production (tests, documentation, etc).

Command executed:

kubebuilder init --domain datumapis.com \
  --repo go.datum.net/network-services-operator \
  --license none \
  --owner 'Datum Technology, Inc.' \
  --project-name network-services-operator
Initialize project with kubebuilder init.
- `Network` - The logical “VPC Network” for Datum. Instances and other services
  can reference networks they’d like to attach to.
  - A Network will be created in the upstream control plane by users, or
    platform defaulting controllers (creating a default network).
- `NetworkBinding` - An association between a network and a resource which
  desires to interact with it in some way. A NetworkBinding defines a topology
  similar to a NetworkContext, and is associated with a NetworkContext of a
  matching topology.
  - This type will be created in the upstream control plane by
    `workload-operator` when a `WorkloadDeployment` is associated with a
    cluster. Future services that need to attach to networks may also create
    NetworkBindings to signal this need.
- `NetworkContext` - A part of a network specific to a certain topology.
  Topology is defined as a map of string keys and values, where the hash of the
  keys and values defines a unique context within the network.
  - This type will be created in the upstream control plane by
    `network-services-operator` as a result of observing `NetworkBindings`
  - Example topology keys are:
    - `topology.datum.net/city-code` - The IATA airport code for where the
      context exists.
    - `topology.datum.net/cluster-name` - The name of the cluster the context is
      associated with.
    - `topology.datum.net/cluster-namespace` - The namespace for the cluster the
      context is associated with.
- `NetworkPolicy` - Not yet fully defined for namespace scoped network policies,
  but types exist to be leveraged by types defined in other controllers such as
  a network interface's network policy.
- `Subnet` - A subnet is associated with a `NetworkContext`. Each subnet will
  have a subnet class to indicate the type of prefix that should be issued.
  Subnets include topology information, which is used when allocating
  `SubnetClaims`.
  - This type will be created in the upstream control plane by
    `network-services-operator` as the result of `SubnetClaim` observations.
    External controllers, such as `infra-provider-gcp` will observe these
    subnets, and program the network as required.
- `SubnetClaim` - A request for a subnet to be issued, including the network
  context, subnet class, and topology information such as
  `gcp.topology.datum.net/region`.
  - This type will be created in the upstream control plane by external
    controllers such as `infra-provider-gcp` when a subnet is required to
    provision requested resources.
… network bindings, subnet claims, and subnets.

Still much work to do around testing, and implementing controllers for other types when needed.

The test suite is expected to pass from this point forward, though there are some Pending tests.
Bootstrapped controller boilerplate, implemented very basic logic for network bindings, subnet claims, and subnets.
@joshlreese joshlreese requested a review from scotwells January 2, 2025 19:26
@joshlreese joshlreese merged commit b4bcc24 into main Jan 2, 2025
6 checks passed
@joshlreese joshlreese deleted the integration/datum-poc branch January 2, 2025 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants