2017-11-09 10 views
0

kubernetesのカスタムコントローラを書き込むIm。 イムは、私はさらにオブジェクトの数を減らすために、コールバック関数にフィルタリング機能を追加するオプションを持っている共有情報提供kubernetes Informerのフィルタオブジェクト

cache.NewSharedIndexInformer(
      &cache.ListWatch{ 
       ListFunc: func(options meta_v1.ListOptions) (k8sruntime.Object, error) { 

        return client.CoreV1().ConfigMaps(nameSpace).List(options) 
       }, 
       WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { 

        return client.CoreV1().ConfigMaps(nameSpace).Watch(options) 
       }, 
      }, 
      &api_v1.ConfigMap{}, 
      0, //Skip resyncr 
      cache.Indexers{}, 
     ) 

を作成するには、での作業イム。 そのようなもの

options.FieldSelector := fields.OneTermEqualSelector("metadata.name", nodeName).String() 

オブジェクトを正規表現で除外したいと思います。または、少なくともラベルによって。残念ながら、ドキュメントは役に立たない。コード自体のテスト以外は何も見つかりませんでした。 フィルタリングメカニズムに正規表現を適用しますか? この問題に関するいくつかの例はどこにありますか?

答えて

0

オブジェクトを正規表現でフィルタリングすることはできません。 覚えておくことが重要であるもう一つは、どのようにあなたは私が何かをしていたK8S に新しいオブジェクトを追加しないです。これは、ラベルによって

labelSelector := labels.Set(map[string]string{"mylabel": "ourdaomain1"}).AsSelector() 

informer := cache.NewSharedIndexInformer(
    &cache.ListWatch{ 
     ListFunc: func(options meta_v1.ListOptions) (k8sruntime.Object, error) { 

      options.LabelSelector = labelSelector.String() 
      return client.CoreV1().ConfigMaps(nameSpace).List(options) 
     }, 
     WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { 

      options.LabelSelector = labelSelector.String() 
      return client.CoreV1().ConfigMaps(nameSpace).Watch(options) 
     }, 
    }, 
    &api_v1.ConfigMap{}, 
    0, //Skip resyncr 
    cache.Indexers{}, 
) 

をフィルタリングするコードですlable

してオブジェクトをファイラーすることが可能ですlike

kubectl --namespace==ourdomain1 create configmap config4 -f ./config1.yaml 

これは良くありません。これは、設定マップのすべてのフィールドを上書きし、ファイル内容全体を新しいオブジェクトのデータに置きます。 適切な方法は

kubectl create -f ./config1.yam 
です。
関連する問題