Skip to content

Commit 61ccd6f

Browse files
authored
Fix NPM Regression & Remove TelemetryBuffer Sidecar (#449)
* give precedence to drop rules (over allow) * - Moving kube-system-chain above target-sets-chain - Add drop entry at the end of Ingress-From and Egress-To chains when there are non Allow-All* entries * write logs to stdout (and log file) so that we can see logs via kubectl * removing kube-system chain and fixing tests * removing telemetry buffer
1 parent 6730d26 commit 61ccd6f

File tree

6 files changed

+699
-606
lines changed

6 files changed

+699
-606
lines changed

npm/azure-npm.yaml

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ spec:
7676
beta.kubernetes.io/os: linux
7777
containers:
7878
- name: azure-npm
79-
image: mcr.microsoft.com/containernetworking/azure-npm:v1.0.28
79+
image: mcr.microsoft.com/containernetworking/azure-npm:v1.0.30
8080
securityContext:
8181
privileged: true
8282
env:
@@ -90,17 +90,6 @@ spec:
9090
mountPath: /run/xtables.lock
9191
- name: log
9292
mountPath: /var/log
93-
- name: socket-dir
94-
mountPath: /var/run
95-
- name: tmp
96-
mountPath: /tmp
97-
- name: azure-vnet-telemetry
98-
image: mcr.microsoft.com/containernetworking/azure-vnet-telemetry:v1.0.28
99-
volumeMounts:
100-
- name: socket-dir
101-
mountPath: /var/run
102-
- name: tmp
103-
mountPath: /tmp
10493
hostNetwork: true
10594
volumes:
10695
- name: log
@@ -111,10 +100,4 @@ spec:
111100
hostPath:
112101
path: /run/xtables.lock
113102
type: File
114-
- name: tmp
115-
hostPath:
116-
path: /tmp
117-
type: Directory
118-
- name: socket-dir
119-
emptyDir: {}
120103
serviceAccountName: azure-npm

npm/iptm/iptm.go

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -101,32 +101,6 @@ func (iptMgr *IptablesManager) InitNpmChains() error {
101101
}
102102
}
103103

104-
// Create AZURE-NPM-KUBE-SYSTEM chain.
105-
if err := iptMgr.AddChain(util.IptablesAzureKubeSystemChain); err != nil {
106-
return err
107-
}
108-
109-
// Append AZURE-NPM-KUBE-SYSTEM chain to AZURE-NPM chain.
110-
entry = &IptEntry{
111-
Chain: util.IptablesAzureChain,
112-
Specs: []string{
113-
util.IptablesJumpFlag,
114-
util.IptablesAzureKubeSystemChain,
115-
},
116-
}
117-
exists, err = iptMgr.Exists(entry)
118-
if err != nil {
119-
return err
120-
}
121-
122-
if !exists {
123-
iptMgr.OperationFlag = util.IptablesAppendFlag
124-
if _, err = iptMgr.Run(entry); err != nil {
125-
log.Errorf("Error: failed to add AZURE-NPM-KUBE-SYSTEM chain to AZURE-NPM chain.")
126-
return err
127-
}
128-
}
129-
130104
// Create AZURE-NPM-INGRESS-PORT chain.
131105
if err := iptMgr.AddChain(util.IptablesAzureIngressPortChain); err != nil {
132106
return err

npm/npm.go

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package npm
55
import (
66
"fmt"
77
"os"
8-
"reflect"
98
"sync"
109
"time"
1110

@@ -32,9 +31,6 @@ const (
3231
heartbeatIntervalInMinutes = 30
3332
)
3433

35-
// reports channel
36-
var reports = make(chan interface{}, 1000)
37-
3834
// NetworkPolicyManager contains informers for pod, namespace and networkpolicy.
3935
type NetworkPolicyManager struct {
4036
sync.Mutex
@@ -81,60 +77,6 @@ func (npMgr *NetworkPolicyManager) GetClusterState() telemetry.ClusterState {
8177
return npMgr.clusterState
8278
}
8379

84-
// SendNpmTelemetry updates the npm report then send it.
85-
func (npMgr *NetworkPolicyManager) SendNpmTelemetry() {
86-
if !npMgr.TelemetryEnabled {
87-
return
88-
}
89-
90-
CONNECT:
91-
tb := telemetry.NewTelemetryBuffer("")
92-
for {
93-
tb.TryToConnectToTelemetryService()
94-
if tb.Connected {
95-
break
96-
}
97-
98-
time.Sleep(time.Second * telemetryRetryTimeInSeconds)
99-
}
100-
101-
heartbeat := time.NewTicker(time.Minute * heartbeatIntervalInMinutes).C
102-
report := npMgr.reportManager.Report
103-
for {
104-
select {
105-
case <-heartbeat:
106-
clusterState := npMgr.GetClusterState()
107-
v := reflect.ValueOf(report).Elem().FieldByName("ClusterState")
108-
if v.CanSet() {
109-
v.FieldByName("PodCount").SetInt(int64(clusterState.PodCount))
110-
v.FieldByName("NsCount").SetInt(int64(clusterState.NsCount))
111-
v.FieldByName("NwPolicyCount").SetInt(int64(clusterState.NwPolicyCount))
112-
}
113-
reflect.ValueOf(report).Elem().FieldByName("ErrorMessage").SetString("heartbeat")
114-
case msg := <-reports:
115-
reflect.ValueOf(report).Elem().FieldByName("ErrorMessage").SetString(msg.(string))
116-
fmt.Println(msg.(string))
117-
}
118-
119-
reflect.ValueOf(report).Elem().FieldByName("Timestamp").SetString(time.Now().UTC().String())
120-
// TODO: Remove below line after the host change is rolled out
121-
reflect.ValueOf(report).Elem().FieldByName("EventMessage").SetString(time.Now().UTC().String())
122-
123-
report, err := npMgr.reportManager.ReportToBytes()
124-
if err != nil {
125-
log.Logf("ReportToBytes failed: %v", err)
126-
continue
127-
}
128-
129-
// If write fails, try to re-establish connections as server/client
130-
if _, err = tb.Write(report); err != nil {
131-
log.Logf("Telemetry write failed: %v", err)
132-
tb.Close()
133-
goto CONNECT
134-
}
135-
}
136-
}
137-
13880
// restore restores iptables from backup file
13981
func (npMgr *NetworkPolicyManager) restore() {
14082
iptMgr := iptm.NewIptablesManager()
@@ -233,11 +175,6 @@ func NewNetworkPolicyManager(clientset *kubernetes.Clientset, informerFactory in
233175
TelemetryEnabled: true,
234176
}
235177

236-
// Set-up channel for Azure-NPM telemetry if it's enabled (enabled by default)
237-
if logger := log.GetStd(); logger != nil && npMgr.TelemetryEnabled {
238-
logger.SetChannel(reports)
239-
}
240-
241178
clusterID := util.GetClusterID(npMgr.nodeName)
242179
clusterState := npMgr.GetClusterState()
243180
npMgr.reportManager.Report.(*telemetry.NPMReport).GetReport(clusterID, npMgr.nodeName, npmVersion, serverVersion.GitVersion, clusterState)

npm/plugin/main.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ var version string
2222
func initLogging() error {
2323
log.SetName("azure-npm")
2424
log.SetLevel(log.LevelInfo)
25-
if err := log.SetTarget(log.TargetLogfile); err != nil {
25+
if err := log.SetTarget(log.TargetStdOutAndLogFile); err != nil {
2626
log.Logf("Failed to configure logging, err:%v.", err)
2727
return err
2828
}
@@ -60,8 +60,6 @@ func main() {
6060

6161
npMgr := npm.NewNetworkPolicyManager(clientset, factory, version)
6262

63-
go npMgr.SendNpmTelemetry()
64-
6563
if err = npMgr.Start(wait.NeverStop); err != nil {
6664
log.Logf("npm failed with error %v.", err)
6765
panic(err.Error)

0 commit comments

Comments
 (0)