Merge pull request #2 from kubesphere/master

update code from master
This commit is contained in:
alex.fan
2018-06-21 15:22:04 +08:00
committed by GitHub
12 changed files with 72 additions and 21 deletions

View File

@@ -24,3 +24,9 @@ before_script:
script:
- make fmt-check && make build
deploy:
provider: script
script: bash install/scripts/docker_push
on:
branch: master

View File

@@ -2,7 +2,8 @@
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
TRAG.Name:=kubesphere-apiserver
TRAG.Org:=kubesphere
TRAG.Name:=ks-apiserver
TRAG.Gopkg:=kubesphere.io/kubesphere
TRAG.Version:=$(TRAG.Gopkg)/pkg/version
@@ -91,7 +92,7 @@ build: fmt
$(call get_build_flags)
$(RUN_IN_DOCKER) time go install -ldflags '$(BUILD_FLAG)' $(TRAG.Gopkg)/cmd/...
mv ./tmp/bin/cmd ./tmp/bin/$(TRAG.Name)
@docker build -t $(TRAG.Name) -f ./Dockerfile.dev ./tmp
@docker build -t $(TRAG.Org)/$(TRAG.Name) -f ./Dockerfile.dev ./tmp
@docker image prune -f 1>/dev/null 2>&1
@echo "build done"

View File

@@ -5,10 +5,13 @@ metadata:
namespace: kubesphere-router-system
labels:
app: kubesphere
component: kubesphere-router
component: ks-router
tier: backend
spec:
selector:
app:
app: kubesphere
component: ks-router
tier: backend
type: LoadBalancer
ports:
- name: http

View File

@@ -1,17 +1,21 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubesphere-router
name: ks-router
namespace: kubesphere-router-system
spec:
replicas: 1
selector:
matchLabels:
app: kubesphere-router
app: kubesphere
component: ks-router
tier: backend
template:
metadata:
labels:
app: kubesphere-router
app: kubesphere
component: ks-router
tier: backend
annotations:
prometheus.io/port: '10254'
prometheus.io/scrape: 'true'

View File

@@ -0,0 +1,4 @@
#!/bin/bash
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker push kubesphere/ks-apiserver:latest

View File

@@ -79,9 +79,8 @@ func makeHttpRequest(method, url, data string) ([]byte, error) {
}
body, err := ioutil.ReadAll(resp.Body)
glog.Error(string(body))
defer resp.Body.Close()
return body, nil
return body, err
}
func (ctl *NamespaceCtl) getKubeConfig(user string) (string, error) {
@@ -203,23 +202,28 @@ func (ctl *NamespaceCtl) createRoleAndRuntime(item v1.Namespace) {
err = ctl.createDefaultRoleBinding(ns, user)
if err != nil {
glog.Error(err)
return
}
resp, err := ctl.createOpRuntime(ns, user)
if err != nil {
glog.Error(resp)
glog.Error(err)
return
}
var runtime runTime
err = json.Unmarshal(resp, &runtime)
if err != nil {
glog.Error(err)
return
}
item.Annotations[openpitrix_runtime] = runtime.RuntimeId
ctl.K8sClient.CoreV1().Namespaces().Update(&item)
_, err = ctl.K8sClient.CoreV1().Namespaces().Update(&item)
if err != nil {
glog.Error(err)
}
}
}

View File

@@ -27,9 +27,11 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/informers"
"k8s.io/client-go/tools/cache"
"kubesphere.io/kubesphere/pkg/models/metrics"
)
const inUse = "in_use_pods"
const inUse = "kubesphere.io/in_use_pods"
func (ctl *PodCtl) addAnnotationToPvc(item v1.Pod) {
volumes := item.Spec.Volumes
@@ -264,6 +266,22 @@ func (ctl *PodCtl) ListWithConditions(conditions string, paging *Paging) (int, i
listWithConditions(ctl.DB, &total, &object, &list, conditions, paging, order)
ch := make(chan metrics.PodMetrics)
for index, _ := range list {
go metrics.GetSinglePodMetrics(list[index].Namespace, list[index].Name, ch)
}
var resultMetrics = make(map[string]metrics.PodMetrics)
for range list {
podMetric := <-ch
resultMetrics[podMetric.PodName] = podMetric
}
for index, _ := range list {
list[index].Metrics = resultMetrics[list[index].Name]
}
return total, list, nil
}

View File

@@ -33,6 +33,7 @@ import (
const (
resyncCircle = 180
Stopped = "stopped"
PvcPending = "Pending"
Running = "running"
Updating = "updating"
tablePods = "pods"

View File

@@ -140,15 +140,18 @@ type workLoadStatus struct {
}
func GetNamespacesResourceStatus(namespace string) (*workLoadStatus, error) {
res := workLoadStatus{Count: make(map[string]int), NameSpace: namespace, Items: make(map[string]interface{})}
var status *ResourceList
var err error
for _, resource := range []string{controllers.Deployments, controllers.Statefulsets, controllers.Daemonsets} {
for _, resource := range []string{controllers.Deployments, controllers.Statefulsets, controllers.Daemonsets, controllers.PersistentVolumeClaim} {
resourceStatus := controllers.Updating
if resource == controllers.PersistentVolumeClaim {
resourceStatus = controllers.PvcPending
}
if len(namespace) > 0 {
status, err = ListResource(resource, fmt.Sprintf("status=%s,namespace=%s", controllers.Updating, namespace), "")
status, err = ListResource(resource, fmt.Sprintf("status=%s,namespace=%s", resourceStatus, namespace), "")
} else {
status, err = ListResource(resource, fmt.Sprintf("status=%s", controllers.Updating), "")
status, err = ListResource(resource, fmt.Sprintf("status=%s", resourceStatus), "")
}
if err != nil {

View File

@@ -34,7 +34,7 @@ func GetAllRouters() ([]coreV1.Service, error) {
k8sClient := client.NewK8sClient()
opts := metaV1.ListOptions{
LabelSelector: "app=kubesphere,component=kubesphere-router-gateway",
LabelSelector: "app=kubesphere,component=ks-router,tier=backend",
}
services, err := k8sClient.CoreV1().Services(constants.IngressControllerNamespace).List(opts)
@@ -56,7 +56,7 @@ func GetRouter(namespace string) (*coreV1.Service, error) {
serviceName := constants.IngressControllerPrefix + namespace
opts := metaV1.ListOptions{
LabelSelector: "app=kubesphere,component=kubesphere-router-gateway",
LabelSelector: "app=kubesphere,component=ks-router,tier=backend,project=" + namespace,
FieldSelector: "metadata.name=" + serviceName,
}
@@ -129,6 +129,9 @@ func CreateRouter(namespace string, routerType coreV1.ServiceType, annotations m
service.Spec.Type = routerType
service.Name = constants.IngressControllerPrefix + namespace
// Add project selector
service.Spec.Selector["project"] = namespace
service, err := k8sClient.CoreV1().Services(constants.IngressControllerNamespace).Create(service)
if err != nil {
glog.Error(err)
@@ -140,6 +143,10 @@ func CreateRouter(namespace string, routerType coreV1.ServiceType, annotations m
case *extensionsV1beta1.Deployment:
deployment := obj.(*extensionsV1beta1.Deployment)
deployment.Name = constants.IngressControllerPrefix + namespace
// Add project label
deployment.Labels["project"] = namespace
deployment.Spec.Template.Spec.Containers[0].Args = append(deployment.Spec.Template.Spec.Containers[0].Args, "--watch-namespace="+namespace)
glog.Info(deployment.Spec.Template.Spec.Containers[0].Args)
deployment, err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Create(deployment)
@@ -171,7 +178,7 @@ func DeleteRouter(namespace string) (*coreV1.Service, error) {
deleteOptions := metaV1.DeleteOptions{}
listOptions := metaV1.ListOptions{
LabelSelector: "app=kubesphere,component=kubesphere-router-gateway",
LabelSelector: "app=kubesphere,component=ks-router,tier=backend,project=" + namespace,
FieldSelector: "metadata.name=" + serviceName}
serviceList, err := k8sClient.CoreV1().Services(constants.IngressControllerNamespace).List(listOptions)

View File

@@ -271,7 +271,7 @@ func WaitForTerminal(k8sClient kubernetes.Interface, cfg *rest.Config, request *
close(terminalSessions[sessionId].bound)
var err error
validShells := []string{"bash", "sh"}
validShells := []string{"sh", "bash"}
if isValidShell(validShells, shell) {
cmd := []string{shell}

View File

@@ -107,7 +107,7 @@ func (s *ServerRunOptions) addFlags(fs *pflag.FlagSet) {
fs.StringVar(&s.mysqlPasswd, "mysql-password", "123456",
"Password of mysql")
fs.StringVar(&s.mysqlUser, "mysql-user", "mysql",
fs.StringVar(&s.mysqlUser, "mysql-user", "root",
"User of mysql.")
fs.StringVar(&s.opAddress, "openpitrix-address", "http://openpitrix-api-gateway.openpitrix-system.svc",