Skip to content

Commit 4f8395a

Browse files
authored
Merge pull request #915 from l1b0k/feat/cni
feat(terway): add WriteCNIConfFirst feature gate
2 parents 475e3cf + eb28f6d commit 4f8395a

4 files changed

Lines changed: 28 additions & 0 deletions

File tree

cmd/terway/main.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"strings"
88
"time"
99

10+
utilfeature "k8s.io/apiserver/pkg/util/feature"
11+
cliflag "k8s.io/component-base/cli/flag"
1012
"k8s.io/klog/v2/textlogger"
1113

1214
_ "go.uber.org/automaxprocs"
@@ -31,6 +33,7 @@ var (
3133
daemonMode string
3234
readonlyListen string
3335
configFilePath string
36+
featureGates map[string]bool
3437
)
3538

3639
func main() {
@@ -41,6 +44,8 @@ func main() {
4144
fs.StringVar(&logLevel, "log-level", "info", "terway log level")
4245
fs.StringVar(&readonlyListen, "readonly-listen", utils.NormalizePath(debugSocketPath), "terway readonly listen")
4346
fs.StringVar(&configFilePath, "config", "/etc/eni/eni.json", "terway config file")
47+
fs.Var(cliflag.NewMapStringBool(&featureGates), "feature-gates", "A set of key=value pairs that describe feature gates for alpha/experimental features. "+
48+
"Options are:\n"+strings.Join(utilfeature.DefaultFeatureGate.KnownFeatures(), "\n"))
4449
ctrl.RegisterFlags(fs)
4550

4651
err := fs.Parse(os.Args[1:])
@@ -56,6 +61,12 @@ func main() {
5661

5762
log.Info(version.Version)
5863

64+
err = utilfeature.DefaultMutableFeatureGate.SetFromMap(featureGates)
65+
if err != nil {
66+
log.Error(err, "unable to set feature gates")
67+
os.Exit(1)
68+
}
69+
5970
ctx := ctrl.SetupSignalHandler()
6071
ctx = ctrl.LoggerInto(ctx, ctrl.Log)
6172
err = daemon.Run(ctx, utils.NormalizePath(defaultSocketPath), readonlyListen, utils.NormalizePath(configFilePath), daemonMode)

daemon/server.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ import (
1717
"time"
1818

1919
"github.com/AliyunContainerService/terway/pkg/aliyun/metadata"
20+
terwayfeature "github.com/AliyunContainerService/terway/pkg/feature"
2021
"github.com/alexflint/go-filemutex"
2122
"github.com/go-logr/logr"
2223
"k8s.io/apimachinery/pkg/util/wait"
24+
utilfeature "k8s.io/apiserver/pkg/util/feature"
2325
logf "sigs.k8s.io/controller-runtime/pkg/log"
2426

2527
"github.com/AliyunContainerService/terway/pkg/metric"
@@ -166,6 +168,11 @@ func newUnixListener(addr string) (net.Listener, error) {
166168
}
167169

168170
func ensureCNIConfig() error {
171+
if utilfeature.DefaultFeatureGate.Enabled(terwayfeature.WriteCNIConfFirst) {
172+
serviceLog.Info("WriteCNIConfFirst is enabled, skip write cni conf")
173+
return nil
174+
}
175+
169176
src, err := os.Open(filepath.Join(tmpCNIConfigPath, cinConfFile))
170177
if err != nil {
171178
return err

hack/init.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ terway-cli cni --output /etc/cni/net.d/10-terway.conflist "$EXTRA_FLAGS"
1717
terway-cli nodeconfig "$EXTRA_FLAGS"
1818
cat /etc/cni/net.d/10-terway.conflist
1919

20+
# Check if WriteCNIConfFirst is enabled
21+
if echo "$EXTRA_FLAGS" | grep "WriteCNIConfFirst=true" >/dev/null; then
22+
echo "WriteCNIConfFirst is enabled, copy 10-terway.conflist to host"
23+
cp /etc/cni/net.d/10-terway.conflist /host/etc/cni/net.d/10-terway.conflist
24+
rm -f /host/etc/cni/net.d/10-terway.conf
25+
fi
26+
2027
node_capabilities=/var/run/eni/node_capabilities
2128
if [ ! -f "$node_capabilities" ]; then
2229
echo "Init node capabilities"

pkg/feature/feature.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@ const (
1818
EFLO featuregate.Feature = "EFLO"
1919

2020
KubeProxyReplacement featuregate.Feature = "KubeProxyReplacement"
21+
22+
WriteCNIConfFirst featuregate.Feature = "WriteCNIConfFirst"
2123
)
2224

2325
var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
2426
AutoDataPathV2: {Default: true, PreRelease: featuregate.Alpha},
2527
EFLO: {Default: true, PreRelease: featuregate.Alpha},
2628
KubeProxyReplacement: {Default: false, PreRelease: featuregate.Alpha},
29+
WriteCNIConfFirst: {Default: false, PreRelease: featuregate.Alpha},
2730
}

0 commit comments

Comments
 (0)