Implement initial cloverctl CLI tool 39/60539/2
authorEddie Arrage <eddie.arrage@huawei.com>
Thu, 2 Aug 2018 23:15:39 +0000 (23:15 +0000)
committerEddie Arrage <eddie.arrage@huawei.com>
Thu, 2 Aug 2018 23:56:23 +0000 (23:56 +0000)
commitc0837d0701009e6142f9800f2b146bec17d6910f
tree8b07c911619c889e0f16d24fca6cbc115f760bab
parent25285393777b4e0ce7989cb6c9cce6b040523feb
Implement initial cloverctl CLI tool

- Uses client-go package to interface to k8s API and implement
functions as cloverkube package.
- Identifies GKE LB IP for clover-controller for user
- Identifies NodePort port number for clover-controller for user
if environment is local k8s (assumes flannel CNI currently)
- Deploys and deletes clover-collector and clover-controller with
native client-go constructs (currently images are defined with
local registry). Future work will implement other clover services
and Istio components. Uses the clover-system namespace.
- Uses Cobra go package to implement CLI (used in kubectl and
istioctl) using cloverctl <verb> <noun> convention.
- Interfaces to clover-controller to configure clover services
(visibility, IDS ...) within the cluster via REST messaging
- Start visibility (collector) engine using input yaml file or
defaults
- Init, stop and clear (truncate Cassandra tables) visibility
engine or get basic stats.
- Add custom rules to IDS from input yaml file and start/stop
IDS
- Generate jmeter testplan on jmeter-master using input yaml
file. Start tests and output log/results from CLI.
- Specify number of jmeter slaves to initiate tests on from
CLI. Automatically find IP addresses of jmeter slaves within
the k8s cluster.
- Sample yaml files for adding IDS rules, starting visibility
engine and generating jmeter test plans.
- Build script to install go and get dependent packages.
- Implement a custom Istio inject package for manual sidecar
injection (cloverinject). Currently, unused as it is built from
Istio 0.8.0/1.0.0 code base.

Change-Id: Ibb8d08cb98267bdffb8905c221473f177d51bbb3
Signed-off-by: Eddie Arrage <eddie.arrage@huawei.com>
30 files changed:
clover/cloverctl/build.sh [new file with mode: 0755]
clover/cloverctl/src/cloverctl/cmd/clear.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/clear_visibility.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/create.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/create_idsrules.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/create_system.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/create_testplan.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/delete.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/delete_system.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/get.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/get_services.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/get_testresult.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/get_visibility.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/init.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/init_visibility.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/root.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/start.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/start_ids.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/start_testplan.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/start_visibility.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/stop.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/stop_ids.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/cmd/stop_visibility.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/main.go [new file with mode: 0644]
clover/cloverctl/src/cloverctl/yaml/idsrule_scan.yaml [new file with mode: 0644]
clover/cloverctl/src/cloverctl/yaml/idsrule_tcp.yaml [new file with mode: 0644]
clover/cloverctl/src/cloverctl/yaml/jmeter_testplan.yaml [new file with mode: 0644]
clover/cloverctl/src/cloverctl/yaml/visibility.yaml [new file with mode: 0644]
clover/cloverctl/src/cloverinject/inject.go [new file with mode: 0644]
clover/cloverctl/src/cloverkube/main.go [new file with mode: 0644]