add ns networkpolicy
This commit is contained in:
65
cmd/ks-network/main.go
Normal file
65
cmd/ks-network/main.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"time"
|
||||
|
||||
"github.com/projectcalico/libcalico-go/lib/apiconfig"
|
||||
"github.com/projectcalico/libcalico-go/lib/clientv3"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"k8s.io/klog"
|
||||
"kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||
ksinformer "kubesphere.io/kubesphere/pkg/client/informers/externalversions"
|
||||
"kubesphere.io/kubesphere/pkg/controller/network/nsnetworkpolicy"
|
||||
"kubesphere.io/kubesphere/pkg/controller/network/provider"
|
||||
)
|
||||
|
||||
const (
|
||||
certPath = "/calicocerts"
|
||||
)
|
||||
|
||||
var npProviderFlag string
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&npProviderFlag, "np-provider", "calico", "specify the network policy provider, k8s or calico")
|
||||
}
|
||||
func main() {
|
||||
klog.InitFlags(nil)
|
||||
flag.Set("logtostderr", "true")
|
||||
flag.Parse()
|
||||
klog.V(1).Info("Preparing kubernetes client")
|
||||
config, err := rest.InClusterConfig()
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
// creates the clientset
|
||||
k8sClientset := kubernetes.NewForConfigOrDie(config)
|
||||
ksClientset := versioned.NewForConfigOrDie(config)
|
||||
informer := ksinformer.NewSharedInformerFactory(ksClientset, time.Minute*10)
|
||||
klog.V(1).Info("Kubernetes client initialized successfully")
|
||||
var npProvider provider.NsNetworkPolicyProvider
|
||||
if npProviderFlag == "calico" {
|
||||
klog.V(1).Info("Preparing calico client")
|
||||
config := apiconfig.NewCalicoAPIConfig()
|
||||
config.Spec.EtcdEndpoints = "https://127.0.0.1:2379"
|
||||
config.Spec.EtcdKeyFile = certPath + "/etcd-key"
|
||||
config.Spec.EtcdCertFile = certPath + "/etcd-cert"
|
||||
config.Spec.EtcdCACertFile = certPath + "/etcd-ca"
|
||||
config.Spec.DatastoreType = apiconfig.EtcdV3
|
||||
client, err := clientv3.New(*config)
|
||||
if err != nil {
|
||||
klog.Fatal("Failed to initialize calico client", err)
|
||||
}
|
||||
npProvider = provider.NewCalicoNetworkProvider(client.NetworkPolicies())
|
||||
klog.V(1).Info("Calico client initialized successfully")
|
||||
}
|
||||
//TODO: support no-calico cni
|
||||
c := nsnetworkpolicy.NewController(k8sClientset, ksClientset, informer.Network().V1alpha1().NamespaceNetworkPolicies(), npProvider)
|
||||
stop := make(chan struct{})
|
||||
klog.V(1).Infof("Starting controller")
|
||||
go informer.Network().V1alpha1().NamespaceNetworkPolicies().Informer().Run(stop)
|
||||
if err := c.Run(1, stop); err != nil {
|
||||
klog.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user