Repository: kubernetes/kops (go)

Issue:
Cilium 1.9 uses incorrect cilium-operator
In https://github.com/cilium/cilium/issues/9920 and https://github.com/cilium/cilium/pull/10972, Cilium started shipping a "fat" operator (`cilium-operator`) with everything built in and "slim" operators (eg `cilium-operator-generic` and `cilium-operator-aws`) with only the specific cloud provider options enabled.

The 1.9 addon templates reference the `cilium-operator-generic` (one of the "slim" operators): https://github.com/kubernetes/kops/blob/master/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.9.yaml.template#L798  This is missing much of the cloud specific functionality, such as AWS ENI IPAM support, which leads to error messages like:

```
level=fatal msg="eni allocator is not supported by this version of cilium-operator-generic" subsys=cilium-operator-generic
```

The 1.8 addon template correctly references the "fat" operator `cilium-operator`: https://github.com/kubernetes/kops/blob/master/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.8.yaml.template#L727   which properly includes all the generic functionality _plus_ the cloud specific functionality such as AWS ENI IPAM.

I believe the fix would be to update the `k8s-1.12-v1.9.yaml.template` file to use the `cilium-operator` instead.  As a temporary workaround with kops version 1.20.0 you can update your cluster config to a specific 1.8 based cilium like:

```yaml
spec:
  networking:                                                                                                                                                                                                                                                                                                                 
    cilium:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
      version: v1.8.9 
```


Pull request:
Use the full operator instead of the generic one
Fixes #11290

Patch:
diff --git a/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.9.yaml.template b/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.9.yaml.template
index 65f53e1fbd..dc20570d13 100644
--- a/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.9.yaml.template
+++ b/upup/models/cloudup/resources/addons/networking.cilium.io/k8s-1.12-v1.9.yaml.template
@@ -795,7 +795,7 @@ spec:
         - --config-dir=/tmp/cilium/config-map
         - --debug=$(CILIUM_DEBUG)
         command:
-        - cilium-operator-generic
+        - cilium-operator
         env:
         - name: K8S_NODE_NAME
           valueFrom:
@@ -817,7 +817,7 @@ spec:
           value: "{{ $.MasterInternalName }}"
         - name: KUBERNETES_SERVICE_PORT
           value: "443"
-        image: "docker.io/cilium/operator-generic:{{ .Version }}"
+        image: "docker.io/cilium/operator:{{ .Version }}"
         imagePullPolicy: IfNotPresent
         name: cilium-operator
         {{ if .EnablePrometheusMetrics }}


Test patch:
diff --git a/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/cilium/manifest.yaml b/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/cilium/manifest.yaml
index 7cbbcd156b..0a2f898236 100644
--- a/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/cilium/manifest.yaml
+++ b/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/cilium/manifest.yaml
@@ -71,7 +71,7 @@ spec:
     version: 1.17.0
   - id: k8s-1.12
     manifest: networking.cilium.io/k8s-1.12-v1.9.yaml
-    manifestHash: dea8534ba3aa267f877f7c2f68a1899fe869e1d3
+    manifestHash: 0e59024a8025c5a3beb4c2c707b03d5233e53c7c
     name: networking.cilium.io
     needsRollingUpdate: all
     selector: