fabric enables declarative configuration of network nodes.
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.
- The Go version declared in
go.mod - Docker with BuildKit support
kubectland access to a compatible Kubernetes cluster
Build and push the Fabriclet image:
make docker-build-fabriclet docker-push-fabriclet FABRICLET_IMG=<some-registry>/fabriclet:tagBuild and push the controller-manager image:
make docker-build-controller-manager docker-push-controller-manager \
CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tagInstall the CRDs into the cluster:
make installDeploy the controller manager:
make deploy CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tagNOTE: 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.
Delete the instances (CRs) from the cluster:
kubectl delete -k config/samples/Delete the APIs(CRDs) from the cluster:
make uninstallUnDeploy the controller from the cluster:
make undeployFollowing the options to release and provide this solution to the users.
- Build the installer for the image built and published in the registry:
make build-installer CONTROLLER_MANAGER_IMG=<some-registry>/fabric-controller-manager:tagNOTE: 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.
- 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- Build the chart using the optional helm plugin
kubebuilder edit --plugins=helm/v2-alpha- 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.
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.
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.
