denis-codefresh-kube-integration
v1.15.18
Published
* The example will print all service in default namespace and create mongo `Project` (Read more about project below) * Obtain cluster credentials: * Run `export CURRENT_CONTEXT=$(kubectl config current-context) && export CURRENT_CLUSTER=$(kubectl conf
Downloads
1
Readme
Integration with K8 over GKE
OLEG TEST
Example
- The example will print all service in default namespace and create mongo
Project
(Read more about project below) - Obtain cluster credentials:
- Run
export CURRENT_CONTEXT=$(kubectl config current-context) && export CURRENT_CLUSTER=$(kubectl config view -o go-template="{{\$curr_context := \"$CURRENT_CONTEXT\" }}{{range .contexts}}{{if eq .name \$curr_context}}{{.context.cluster}}{{end}}{{end}}") && export KUBE_HOST=$(kubectl config view -o go-template="{{\$cluster_context := \"$CURRENT_CLUSTER\"}}{{range .clusters}}{{if eq .name \$cluster_context}}{{.cluster.server}}{{end}}{{end}}")
- Run:
export KUBE_CA_CERT=$(kubectl get secret -o go-template='{{index .data "ca.crt" }}' $(kubectl get sa default -o go-template="{{range .secrets}}{{.name}}{{end}}"))
- Run:
export KUBE_ACCOUNT_TOKEN=$(kubectl get secret -o go-template='{{index .data "token" }}' $(kubectl get sa default -o go-template="{{range .secrets}}{{.name}}{{end}}"))
- Run
- Run
example.js
PROJECT
Definition
Project is an abstraction of set of resources that together have applicative purpose.
At the moment, project must have at service, one service
Structure
{
selector,
namespace,
stauts,
resources,
name,
metadata
}
- Selector - Cluster logical name as represented in Codefresh
- Namespace - Namespace where the project exist
- Status - Status of the project (
{type: String("SUCCESS", "FAILED", "WARNING", "IN_PROGRESS" ,"UNKNOWN")}
) - Resources - Set of resources that defined the project
- Metadata - additional data analyzed and aggregated from resources and from Codefresh other service if possible (
{labels: Object, projectSelectors: Object, containers: Object[{image: String, name: String, status: Object[]}]}
).
Project API (REST Calls)
* GET `/projects` - returns an array of all projects with minimal information about the project
* GET `/projects/:name` - return specific project with full description
* POST `/projects` - create a project
* DELETE `/projects/:name` - delete a project (deletion means, delete all the resources)
* PUT `/projects/:name` - update project resources
Project API (As object)
* Evenets:
* ['SERVICE.ADDED', 'DEPLOYMENT.ADDED', 'REPLICASET.SET.ADDED', 'POD.SET.ADDED']
* Functions:
* setName(name: String) - Set the project name, project automatically sets his name when adding service
* getName - return the projects name
* getNamespace - return the projects namespace
* analyzeStatus - traverse all the current resources and analyze the project status
* setService(svc: Service) - set the projects service
* setDeployment(deploy: Deployment) - set the projects deployment
* setPods(pods: Pod || Pod[]) - set the projects pods
* setReplicaSets(rss: Replicaset || Replicaset[]) - set the projects
* toMinifiedJson - return minified representation of project (`{name, namespace, selector, metadata, status}`)
* toJson - return full representation of the project