Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/solarwinds/appoptics-kubernetes-controller
AppOptics Controller for Kubernetes
https://github.com/solarwinds/appoptics-kubernetes-controller
appoptics containers controller docker kubernetes operator solarwinds-innovation
Last synced: 3 days ago
JSON representation
AppOptics Controller for Kubernetes
- Host: GitHub
- URL: https://github.com/solarwinds/appoptics-kubernetes-controller
- Owner: solarwinds
- License: apache-2.0
- Created: 2018-09-19T16:27:20.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-05-28T14:04:13.000Z (over 2 years ago)
- Last Synced: 2024-11-10T14:12:43.390Z (2 months ago)
- Topics: appoptics, containers, controller, docker, kubernetes, operator, solarwinds-innovation
- Language: Go
- Homepage:
- Size: 59.6 KB
- Stars: 2
- Watchers: 7
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kubernetes Controller for AppOptics
* [What is an AppOptics controller?](#What_is_an_AppOptics_controller?)
* [Requirements](#Requirements)
* [Important information](#)
* [Build, docker build, push...](#Build,-docker-build,-push...)
* [Deploy appoptics-kubernetes-controller](#Deploy-appoptics-kubernetes-controller)
* [Run it locally connecting to a k8s cluster](#Run-it-locally-connecting-to-a-k8s-cluster)
## What is an AppOptics controller?The `appoptics-kubernetes-controller` is a Kubernetes controller (a.k.a. an operator) that provides a Kubernetes-native interface for managing select AppOptics resources. Currently, the controller manages the following custom resources:
- `AppOpticsAlerts`, `AppOpticsDashboards` and `AppOpticsServices`
Using an AppOptics token you provide, the controller will create thes resources your AppOptics account. This controller ensures these AppOptics resources conform to the values you define in the `Spec`.
Stated differently, this controller can create/update/delete AppOptics Charts, Services and Alerts.## Deployment
### Requirements
* A Kubernetes v1.9.0 or greater cluster
### Deploy appoptics-kubernetes-controller
In the `manifests` folder there are some resources that will help you:
* `dashboard-crd.yaml` - The Dashboard CRD used by the controller.
* `examples/example-dashboard.yaml` - Just an example of the `dashboard` CRD.* `service-crd.yaml` - The Service CRD used by the controller.
* `examples/example-service.yaml` - Just an example of the `service` CRD.* `alert-crd.yaml` - The Alert CRD used by the controller.
* `examples/example-alert.yaml` - Just an example of the `alert` CRD.
### Run it locally connecting to a k8s cluster
You can run the controller locally! To do this you can just build the controller using `go build` and this will create the binary `appoptics-kubernetes-controller` in your project root path.
To connect the controller to a cluster you need a valid `kubeconfig`, so if you already have your `kubeconfig` in `~/.kube/config` you can run:
```
NAMESPACE=appoptics-kubernetes-controller RESYNC_SECS=60 ./appoptics-kubernetes-controller --kubeconfig=~/.kube/config -v=1 -logtostderr=true
```
Note: `-v=1 -logtostderr=true` are not required but it's useful to see some logs.### AppOptics Token
To save a secret containing your AppOptics token to your namespace.
`make add_token NAMESPACE=Your Namespace TOKEN=APPOPTICS API TOKEN`NAMESPACE is optional, if no namespace is passed it will run cluster wide
This will create a secret object with the name "appoptics" in your name space within your CRDs you can reference this by defining your secret name in the spec eg
```
apiVersion: "appoptics.io/v1"
kind: "AppOpticsService"
metadata:
name: exampleservice
namespace: Your Namespace
finalizers:
- appoptics.io
spec:
namespace: "default"
secret: "appoptics"
data: |-
type: "mail"
settings:
addresses: "[email protected]"
title: "SUPPORT"
```## Contributing
### Requirements
* go v1.10.2
* [dep](https://github.com/golang/dep)
* Kubernetes v1.9.0 or greater cluster### Building
To make things easier, checkout the project to:
`$GOPATH/src/github.com/solarwinds/appoptics-kubernetes-controller`
To build the controller and create a docker container we just need to run `make`. This will:
* Update project dependencies with `dep ensure`
* Update k8s auto generated code
* Run the tests
* Build a docker image and tag it
After that you can build and push the docker image to `docker.com/solarwinds/appoptics-kubernetes-controller` with:
* To push the image with the tag `canary` and APP_VERSION `canary` you can just run: `make push`
* If we want to push the image with a different tag (or tags!) you can run: `IMAGE_TAG=belitre make push`, this will push the docker image as `docker.com/solarwinds/appoptics-kubernetes-controller:belitre`
* __IMAGE_TAG__ is used to get the version to tag the resources, the controller will tag resources with the labels:
* `app=appoptics-kubernetes-controller`
* `version=IMAGE_TAG-GIT_COMMIT`
## Questions/CommentsPlease open an [issue](/issues). We'd love to hear from you.
## Licensing
Released under Apache 2## Heritage
* Based on Sample Controller https://github.com/kubernetes/sample-controller
* Make commands based on Helm makefile https://github.com/helm/helm/blob/master/Makefile