Code Monkey home page Code Monkey logo

koku-metrics-operator's Introduction

koku-metrics-operator

License: Apache-2.0 Build and Publish Images Unit Tests

About

Operator to obtain OCP usage data and upload it to koku. The operator utilizes Golang to collect usage data from an OCP cluster installation.

You must have access to an OpenShift v.4.5+ cluster.

To submit an issue please visit https://issues.redhat.com/projects/COST/

Development

More specific documentation for local development can be found here.

This project was generated using Operator SDK. For a more in depth understanding of the structure of this repo, see the user guide that was used to generate it.

This project requires Go 1.13 or greater if you plan on running the operator locally. To get started developing against koku-metrics-operator first clone a local copy of the git repository.

git clone https://github.com/project-koku/koku-metrics-operator.git

Run the following command to prevent changes to config/manager/kustomization.yaml from being committed to the repo:

git update-index --assume-unchanged config/manager/kustomization.yaml

Now install and configure pre-commit. You can choose your installation steps for pre-commit by using the pre-commit installation instructions. Configure pre-commit for the local repository with the following command:

pre-commit install

Next, install the Operator SDK CLI using the following documentation. The operator is currently being built with the v0.19 release of the operator-sdk.

To build the manager binary you can execute the following make command:

make manager

To build the docker image you can execute the following make command:

make docker-build

Linting can be performed with the following make commands:

make fmt
make lint

Testing

Execute test by running the following make command:

make test

Deploying the Operator

First, create the koku-metrics-operator project. This is where we are going to deploy our Operator.

Before running the operator, the CRD must be registered with the Kubernetes apiserver:

make install

Once this is done, there are two ways to run the operator:

  • As Go program outside a cluster
  • As a Deployment inside a Kubernetes cluster

Configuring your test environment

Projects are scaffolded with unit tests that utilize the envtest library, which requires certain Kubernetes server binaries be present locally. Installation instructions can be found [here][env-test-setup].

1. Run locally outside the cluster

To run the operator locally execute the following command:

$ make run ENABLE_WEBHOOKS=false

2. Run as a Deployment inside the cluster

Build and push the image

Before building the operator image, ensure the generated Dockerfile references the base image you want. You can change the default "runner" image gcr.io/distroless/static:nonroot by replacing its tag with another, for example alpine:latest, and removing the USER: nonroot:nonroot directive.

To build and push the operator image, use the following make commands. Make sure to modify the IMG arg in the example below to reference a container repository that you have access to. You can obtain an account for storing containers at repository sites such quay.io or hub.docker.com. This example uses quay.

Build the image:

$ export USERNAME=<quay-username>

$ make docker-build IMG=quay.io/$USERNAME/koku-metrics-operator:v0.0.1

Push the image to a repository and make sure to set the repository to public:

$ make docker-push IMG=quay.io/$USERNAME/koku-metrics-operator:v0.0.1

Note: The name and tag of the image (IMG=<some-registry>/<project-name>:tag) in both the commands can also be set in the Makefile. Modify the line which has IMG ?= controller:latest to set your desired default image name.

Branches of the repository are built automaticaly here.

Deploy the operator

$ cd config/default/ && kustomize edit set namespace "koku-metrics-operator" && cd ../..

Run the following to deploy the operator. This will also install the RBAC manifests from config/rbac.

$ make deploy IMG=quay.io/$USERNAME/koku-metrics-operator:v0.0.1

You can optionally build, push, and deploy the image all at the same time by running:

$ make build-and-deploy IMG=quay.io/$USERNAME/koku-metrics-operator:v0.0.1

You can also optionally substitute the USER arg for the IMG arg above for the build & deploy commands. Run make help to see all of the options.

NOTE If you have enabled webhooks in your deployments, you will need to have cert-manager already installed in the cluster or make deploy will fail when creating the cert-manager resources.

If your current branch has been pushed to the origin repository then you can deploy your current branch with the following command.

$ make deploy-branch

Verify that the koku-metrics-operator is up and running:

$ oc get deployment

Create a KokuMetricsConfig CR

Create the CR with the default token authentication:

$ make deploy-cr

Create the CR with basic authentication specifying a username and password:

$ make deploy-cr USER=$YOUR_USERNAME PASS=$YOUR_PASSWORD AUTH=basic

Review the logs for the Koku Metrics operator.

Cleanup

$ oc delete -f config/samples/koku-metrics-cfg_v1beta1_kokumetricsconfig.yaml
$ oc delete deployments,service -l control-plane=controller-manager
$ oc delete role,rolebinding --all

koku-metrics-operator's People

Contributors

maskarb avatar abaiken avatar dependabot[bot] avatar chambridge avatar djnakabaale avatar cgoodfred avatar boaz0 avatar jcho02 avatar raptorsun avatar chargio avatar shivanggoswami avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.