This controller is used to fill the gap in k8s-config-connector for exporting value from Config Connector managed resources into Secrets and ConfigMaps.
Currently supported Config Connector resources:
Here is an example resource for the controller:
apiVersion: gdp.deliveryhero.io/v1alpha1
kind: ResourceFieldExport
metadata:
name: myapp-redis
spec:
from:
apiVersion: redis.cnrm.cloud.google.com/v1beta1
kind: RedisInstance
name: myapp-redis
outputs:
- key: endpoint
path: .status.host
- key: port
path: .status.port
requiredFields:
statusConditions:
- status: "True"
type: Ready
to:
name: myapp-redis-config
type: ConfigMap
Which will update a ConfigMap
with data that can be used to add environment variables to your Kubernetes pod:
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
endpoint: 10.111.1.3
port: 6379
The controller can also update a Secret
.
You’ll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster.
Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info
shows).
Follow chart doc to install Field Exporter with CRDs
- Install Instances of Custom Resources:
kubectl apply -k config/samples/
- Build and push your image to the location specified by
IMG
:
make docker-build docker-push IMG=<some-registry>/field-exporter:tag
- Deploy the controller to the cluster with the image specified by
IMG
:
make deploy IMG=<some-registry>/field-exporter:tag
To delete the CRDs from the cluster:
make uninstall
UnDeploy the controller from the cluster:
make undeploy
This project aims to follow the Kubernetes Operator pattern.
It uses Controllers, which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster.
- Install the CRDs into the cluster:
make install
- Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
NOTE: You can also run this in one step by running: make install run
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make manifests
NOTE: Run make --help
for more information on all potential make
targets
More information can be found via the Kubebuilder Documentation
To contribute, please read our contributing docs.
Copyright © 2023 Delivery Hero SE
Contents of this repository is licensed under the Apache-2.0 License.