Skip to content
ironcore-devPublic

About

Immutable, Declarative Network Configuration

Resources

Code of conduct

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

fabric

REUSE status GitHub License PRs Welcome

fabric enables declarative configuration of network nodes.

Description

fabric models unconfigured nodes as a Node. A Node can have multiple Interfaces. To actually make a Node configured, a Cell resource is created referencing the Node to configure (think of k8s' Node <-> Pod binding with Node being a k8s Node and Pod being a Cell resource, just that only a single Cell can be on a Node at a time).

Since configuring a Node is heavily vendor-dependent, the cellruntime/Runtime interface allows a provider to implement the functionality required to integrate with fabric.

Getting Started

Prerequisites

  • The Go version declared in go.mod
  • Docker with BuildKit support
  • kubectl and access to a compatible Kubernetes cluster

To Deploy on the cluster

Build and push the Fabriclet image:

make docker-build-fabriclet docker-push-fabriclet FABRICLET_IMG=<some-registry>/fabriclet:tag

Build and push the controller-manager image:

make docker-build-controller-manager docker-push-controller-manager \
  CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tag

Install the CRDs into the cluster:

make install

Deploy the controller manager:

make deploy CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tag

NOTE: If you encounter RBAC errors, you may need to grant yourself cluster-admin privileges or be logged in as admin.

Create instances of your solution You can apply the samples (examples) from the config/sample:

kubectl apply -k config/samples/

NOTE: Ensure that the samples has default values to test it out.

To Uninstall

Delete the instances (CRs) from the cluster:

kubectl delete -k config/samples/

Delete the APIs(CRDs) from the cluster:

make uninstall

UnDeploy the controller from the cluster:

make undeploy

Project Distribution

Following the options to release and provide this solution to the users.

By providing a bundle with all YAML files

  1. Build the installer for the image built and published in the registry:
make build-installer CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tag

NOTE: The makefile target mentioned above generates an 'install.yaml' file in the dist directory. This file contains all the resources built with Kustomize, which are necessary to install this project without its dependencies.

  1. Using the installer

Users can just run 'kubectl apply -f ' to install the project, i.e.:

kubectl apply -f https://raw.githubusercontent.com/<org>/fabric/<tag or branch>/dist/install.yaml

By providing a Helm Chart

  1. Build the chart using the optional helm plugin
kubebuilder edit --plugins=helm/v2-alpha
  1. See that a chart was generated under 'dist/chart', and users can obtain this solution from there.

NOTE: If you change the project, you need to update the Helm Chart using the same command above to sync the latest changes. Furthermore, if you create webhooks, you need to use the above command with the '--force' flag and manually ensure that any custom configuration previously added to 'dist/chart/values.yaml' or 'dist/chart/manager/manager.yaml' is manually re-applied afterwards.

Contributing

Contributions are welcome. See the IronCore contributor guide for the shared contribution process.

NOTE: Run make help for more information on all available development and deployment targets.

Licensing

Copyright SAP SE or an SAP affiliate company and IronCore contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available through the REUSE metadata.

Bundesministerium für Wirtschaft und Energie (BMWE)-EU funding logo

About

Immutable, Declarative Network Configuration

Resources

Code of conduct

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages