change router underlying resource apiversion (#1590)

This commit is contained in:
zryfish
2019-11-26 19:18:27 +08:00
committed by GitHub
parent 16d9c2aebb
commit 618328e62e
3 changed files with 22 additions and 24 deletions

View File

@@ -21,6 +21,7 @@ package routers
import ( import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
v1 "k8s.io/api/apps/v1"
"k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/klog" "k8s.io/klog"
@@ -31,8 +32,7 @@ import (
"kubesphere.io/kubesphere/pkg/informers" "kubesphere.io/kubesphere/pkg/informers"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/kubernetes/scheme"
"strings" "strings"
@@ -41,24 +41,24 @@ import (
) )
// choose router node ip by labels, currently select master node // choose router node ip by labels, currently select master node
var RouterNodeIPLabelSelector = map[string]string{ var routerNodeIPLabelSelector = map[string]string{
"node-role.kubernetes.io/master": "", "node-role.kubernetes.io/master": "",
} }
const ( const (
SERVICEMESH_ENABLED = "servicemesh.kubesphere.io/enabled" servicemeshEnabled = "servicemesh.kubesphere.io/enabled"
SIDECAR_INJECT = "sidecar.istio.io/inject" sidecarInject = "sidecar.istio.io/inject"
) )
var routerTemplates map[string]runtime.Object var routerTemplates map[string]runtime.Object
// Load yamls // Load yamls
func init() { func init() {
yamls, err := LoadYamls() yamls, err := loadYamls()
routerTemplates = make(map[string]runtime.Object, 2) routerTemplates = make(map[string]runtime.Object, 2)
if err != nil { if err != nil {
klog.Error(err) klog.Warning("error happened during loading external yamls", err)
return return
} }
@@ -74,7 +74,7 @@ func init() {
switch obj.(type) { switch obj.(type) {
case *corev1.Service: case *corev1.Service:
routerTemplates["SERVICE"] = obj routerTemplates["SERVICE"] = obj
case *extensionsv1beta1.Deployment: case *v1.Deployment:
routerTemplates["DEPLOYMENT"] = obj routerTemplates["DEPLOYMENT"] = obj
} }
} }
@@ -86,7 +86,7 @@ func init() {
func getMasterNodeIp() string { func getMasterNodeIp() string {
nodeLister := informers.SharedInformerFactory().Core().V1().Nodes().Lister() nodeLister := informers.SharedInformerFactory().Core().V1().Nodes().Lister()
selector := labels.SelectorFromSet(RouterNodeIPLabelSelector) selector := labels.SelectorFromSet(routerNodeIPLabelSelector)
masters, err := nodeLister.List(selector) masters, err := nodeLister.List(selector)
sort.Slice(masters, func(i, j int) bool { sort.Slice(masters, func(i, j int) bool {
@@ -174,13 +174,13 @@ func getRouterService(namespace string) (*corev1.Service, error) {
} }
// Load all resource yamls // Load all resource yamls
func LoadYamls() ([]string, error) { func loadYamls() ([]string, error) {
var yamls []string var yamls []string
files, err := ioutil.ReadDir(constants.IngressControllerFolder) files, err := ioutil.ReadDir(constants.IngressControllerFolder)
if err != nil { if err != nil {
klog.Error(err) klog.Warning(err)
return nil, err return nil, err
} }
@@ -205,7 +205,7 @@ func LoadYamls() ([]string, error) {
func CreateRouter(namespace string, routerType corev1.ServiceType, annotations map[string]string) (*corev1.Service, error) { func CreateRouter(namespace string, routerType corev1.ServiceType, annotations map[string]string) (*corev1.Service, error) {
injectSidecar := false injectSidecar := false
if enabled, ok := annotations[SERVICEMESH_ENABLED]; ok { if enabled, ok := annotations[servicemeshEnabled]; ok {
if enabled == "true" { if enabled == "true" {
injectSidecar = true injectSidecar = true
} }
@@ -307,7 +307,7 @@ func deleteRouterService(namespace string) (*corev1.Service, error) {
// delete controller service // delete controller service
serviceName := constants.IngressControllerPrefix + namespace serviceName := constants.IngressControllerPrefix + namespace
deleteOptions := meta_v1.DeleteOptions{} deleteOptions := metav1.DeleteOptions{}
err = k8sClient.CoreV1().Services(constants.IngressControllerNamespace).Delete(serviceName, &deleteOptions) err = k8sClient.CoreV1().Services(constants.IngressControllerNamespace).Delete(serviceName, &deleteOptions)
if err != nil { if err != nil {
@@ -328,13 +328,13 @@ func createOrUpdateRouterWorkload(namespace string, publishService bool, service
deployName := constants.IngressControllerPrefix + namespace deployName := constants.IngressControllerPrefix + namespace
k8sClient := client.ClientSets().K8s().Kubernetes() k8sClient := client.ClientSets().K8s().Kubernetes()
deployment, err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Get(deployName, meta_v1.GetOptions{}) deployment, err := k8sClient.AppsV1().Deployments(constants.IngressControllerNamespace).Get(deployName, metav1.GetOptions{})
createDeployment := true createDeployment := true
if err != nil { if err != nil {
if errors.IsNotFound(err) { if errors.IsNotFound(err) {
deployment = obj.(*extensionsv1beta1.Deployment) deployment = obj.(*v1.Deployment)
deployment.Name = constants.IngressControllerPrefix + namespace deployment.Name = constants.IngressControllerPrefix + namespace
@@ -376,9 +376,9 @@ func createOrUpdateRouterWorkload(namespace string, publishService bool, service
deployment.Spec.Template.Annotations = make(map[string]string, 0) deployment.Spec.Template.Annotations = make(map[string]string, 0)
} }
if servicemeshEnabled { if servicemeshEnabled {
deployment.Spec.Template.Annotations[SIDECAR_INJECT] = "true" deployment.Spec.Template.Annotations[sidecarInject] = "true"
} else { } else {
deployment.Spec.Template.Annotations[SIDECAR_INJECT] = "false" deployment.Spec.Template.Annotations[sidecarInject] = "false"
} }
if publishService { if publishService {
@@ -388,9 +388,9 @@ func createOrUpdateRouterWorkload(namespace string, publishService bool, service
} }
if createDeployment { if createDeployment {
deployment, err = k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Create(deployment) deployment, err = k8sClient.AppsV1().Deployments(constants.IngressControllerNamespace).Create(deployment)
} else { } else {
deployment, err = k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Update(deployment) deployment, err = k8sClient.AppsV1().Deployments(constants.IngressControllerNamespace).Update(deployment)
} }
if err != nil { if err != nil {
@@ -404,10 +404,10 @@ func createOrUpdateRouterWorkload(namespace string, publishService bool, service
func deleteRouterWorkload(namespace string) error { func deleteRouterWorkload(namespace string) error {
k8sClient := client.ClientSets().K8s().Kubernetes() k8sClient := client.ClientSets().K8s().Kubernetes()
deleteOptions := meta_v1.DeleteOptions{} deleteOptions := metav1.DeleteOptions{}
// delete controller deployment // delete controller deployment
deploymentName := constants.IngressControllerPrefix + namespace deploymentName := constants.IngressControllerPrefix + namespace
err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Delete(deploymentName, &deleteOptions) err := k8sClient.AppsV1().Deployments(constants.IngressControllerNamespace).Delete(deploymentName, &deleteOptions)
if err != nil { if err != nil {
klog.Error(err) klog.Error(err)
} }
@@ -448,7 +448,7 @@ func UpdateRouter(namespace string, routerType corev1.ServiceType, annotations m
return router, err return router, err
} }
enableServicemesh := annotations[SERVICEMESH_ENABLED] == "true" enableServicemesh := annotations[servicemeshEnabled] == "true"
err = createOrUpdateRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, enableServicemesh) err = createOrUpdateRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, enableServicemesh)
if err != nil { if err != nil {

View File

@@ -1 +0,0 @@
package routers

View File

@@ -1 +0,0 @@
package routers