Uploaded image for project: 'Knative Serving'
  1. Knative Serving
  2. SRVKS-1013

3scale-kourier-gateway unavailable after OCP upgrade to 4.12

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • 1.27.0
    • 1.27.0
    • None
    • None

      The gateway throws this error and Pods don't start after upgrade to OCP 4.12:

      message: 'pods "3scale-kourier-gateway-9d6d8fcf8-7959f" is forbidden: violates
            PodSecurity "restricted:v1.24": runAsNonRoot != true (container "kourier-gateway"
            must not set securityContext.runAsNonRoot=false)'
      

      Apparently, the pod security policy got restricted for the knative-serving-ingress namespace after cluster upgrade:

      ❯ oc get deployment.apps/3scale-kourier-gateway -n knative-serving-ingress -oyaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        annotations:
          deployment.kubernetes.io/revision: "6"
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"creationTimestamp":null,"labels":{"app.kubernetes.io/component":"net-kourier","app.kubernetes.io/name":"knative-serving","app.kubernetes.io/version":"1.6.0","networking.knative.dev/ingress-provider":"kourier","serving.knative.openshift.io/ownerName":"knative-serving","serving.knative.openshift.io/ownerNamespace":"knative-serving"},"name":"3scale-kourier-gateway","namespace":"knative-serving-ingress"},"spec":{"replicas":2,"selector":{"matchLabels":{"app":"3scale-kourier-gateway"}},"strategy":{"rollingUpdate":{"maxSurge":"100%","maxUnavailable":0},"type":"RollingUpdate"},"template":{"metadata":{"annotations":{"networking.knative.dev/poke":"v0.26"},"creationTimestamp":null,"labels":{"app":"3scale-kourier-gateway"}},"spec":{"containers":[{"args":["--base-id 1","-c /tmp/config/envoy-bootstrap.yaml","--log-level info"],"command":["/usr/local/bin/envoy"],"env":[{"name":"KUBERNETES_MIN_VERSION","value":"v1.0.0"}],"image":"registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:5716a22874c9afa06159da127caf28809ae4f3c18a58605ee662021eb8c9099a","lifecycle":{"preStop":{"exec":{"command":["/bin/sh","-c","curl -X POST --unix /tmp/envoy.admin http://localhost/healthcheck/fail; sleep 15"]}}},"name":"kourier-gateway","ports":[{"containerPort":8080,"name":"http2-external","protocol":"TCP"},{"containerPort":8081,"name":"http2-internal","protocol":"TCP"},{"containerPort":8443,"name":"https-external","protocol":"TCP"},{"containerPort":8090,"name":"http-probe","protocol":"TCP"},{"containerPort":9443,"name":"https-probe","protocol":"TCP"}],"readinessProbe":{"httpGet":{"httpHeaders":[{"name":"Host","value":"internalkourier"}],"path":"/ready","port":8081,"scheme":"HTTP"},"initialDelaySeconds":10,"periodSeconds":5},"resources":{},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":false,"runAsNonRoot":false,"seccompProfile":{"type":"RuntimeDefault"}},"volumeMounts":[{"mountPath":"/tmp/config","name":"config-volume"}]}],"restartPolicy":"Always","volumes":[{"configMap":{"name":"kourier-bootstrap"},"name":"config-volume"}]}}},"status":{}}
        creationTimestamp: "2023-01-17T14:59:28Z"
        generation: 7
        labels:
          app.kubernetes.io/component: net-kourier
          app.kubernetes.io/name: knative-serving
          app.kubernetes.io/version: 1.6.0
          networking.knative.dev/ingress-provider: kourier
          serving.knative.openshift.io/ownerName: knative-serving
          serving.knative.openshift.io/ownerNamespace: knative-serving
        name: 3scale-kourier-gateway
        namespace: knative-serving-ingress
        resourceVersion: "391575"
        uid: b6acf87c-92b3-4246-915e-1a0fd6de08b4
      spec:
        progressDeadlineSeconds: 600
        replicas: 2
        revisionHistoryLimit: 10
        selector:
          matchLabels:
            app: 3scale-kourier-gateway
        strategy:
          rollingUpdate:
            maxSurge: 100%
            maxUnavailable: 0
          type: RollingUpdate
        template:
          metadata:
            annotations:
              networking.knative.dev/poke: v0.26
            creationTimestamp: null
            labels:
              app: 3scale-kourier-gateway
          spec:
            containers:
            - args:
              - --base-id 1
              - -c /tmp/config/envoy-bootstrap.yaml
              - --log-level info
              command:
              - /usr/local/bin/envoy
              env:
              - name: KUBERNETES_MIN_VERSION
                value: v1.0.0
              image: registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:5716a22874c9afa06159da127caf28809ae4f3c18a58605ee662021eb8c9099a
              imagePullPolicy: IfNotPresent
              lifecycle:
                preStop:
                  exec:
                    command:
                    - /bin/sh
                    - -c
                    - curl -X POST --unix /tmp/envoy.admin http://localhost/healthcheck/fail;
                      sleep 15
              name: kourier-gateway
              ports:
              - containerPort: 8080
                name: http2-external
                protocol: TCP
              - containerPort: 8081
                name: http2-internal
                protocol: TCP
              - containerPort: 8443
                name: https-external
                protocol: TCP
              - containerPort: 8090
                name: http-probe
                protocol: TCP
              - containerPort: 9443
                name: https-probe
                protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  httpHeaders:
                  - name: Host
                    value: internalkourier
                  path: /ready
                  port: 8081
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 5
                successThreshold: 1
                timeoutSeconds: 1
              resources: {}
              securityContext:
                allowPrivilegeEscalation: false
                capabilities:
                  drop:
                  - ALL
                readOnlyRootFilesystem: false
                runAsNonRoot: false
                seccompProfile:
                  type: RuntimeDefault
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              volumeMounts:
              - mountPath: /tmp/config
                name: config-volume
            dnsPolicy: ClusterFirst
            restartPolicy: Always
            schedulerName: default-scheduler
            securityContext: {}
            terminationGracePeriodSeconds: 30
            volumes:
            - configMap:
                defaultMode: 420
                name: kourier-bootstrap
              name: config-volume
      status:
        conditions:
        - lastTransitionTime: "2023-01-17T14:59:28Z"
          lastUpdateTime: "2023-01-17T15:37:38Z"
          message: ReplicaSet "3scale-kourier-gateway-9d6d8fcf8" has successfully progressed.
          reason: NewReplicaSetAvailable
          status: "True"
          type: Progressing
        - lastTransitionTime: "2023-01-17T16:36:21Z"
          lastUpdateTime: "2023-01-17T16:36:21Z"
          message: Deployment does not have minimum availability.
          reason: MinimumReplicasUnavailable
          status: "False"
          type: Available
        - lastTransitionTime: "2023-01-17T16:36:21Z"
          lastUpdateTime: "2023-01-17T16:36:21Z"
          message: 'pods "3scale-kourier-gateway-9d6d8fcf8-7959f" is forbidden: violates
            PodSecurity "restricted:v1.24": runAsNonRoot != true (container "kourier-gateway"
            must not set securityContext.runAsNonRoot=false)'
          reason: FailedCreate
          status: "True"
          type: ReplicaFailure
        observedGeneration: 7
        unavailableReplicas: 2
      

      The security context for the pod itself is empty: "securityContext: {}"

      
      ❯ oc get ns knative-serving-ingress -oyaml
      apiVersion: v1
      kind: Namespace
      metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"v1","kind":"Namespace","metadata":{"labels":{"app.kubernetes.io/component":"net-kourier","app.kubernetes.io/name":"knative-serving","app.kubernetes.io/version":"1.6.0","knative.openshift.io/part-of":"openshift-serverless","networking.knative.dev/ingress-provider":"kourier","serving.knative.openshift.io/ownerName":"knative-serving","serving.knative.openshift.io/ownerNamespace":"knative-serving"},"name":"knative-serving-ingress"}}
          openshift.io/sa.scc.mcs: s0:c38,c2
          openshift.io/sa.scc.supplemental-groups: 1001410000/10000
          openshift.io/sa.scc.uid-range: 1001410000/10000
        creationTimestamp: "2023-01-17T14:59:27Z"
        labels:
          app.kubernetes.io/component: net-kourier
          app.kubernetes.io/name: knative-serving
          app.kubernetes.io/version: 1.6.0
          knative.openshift.io/part-of: openshift-serverless
          kubernetes.io/metadata.name: knative-serving-ingress
          networking.knative.dev/ingress-provider: kourier
          pod-security.kubernetes.io/enforce: restricted
          pod-security.kubernetes.io/enforce-version: v1.24
          serving.knative.openshift.io/ownerName: knative-serving
          serving.knative.openshift.io/ownerNamespace: knative-serving
        name: knative-serving-ingress
        resourceVersion: "315173"
        uid: f505129f-e77d-4542-a6aa-f1a257f414a0
      spec:
        finalizers:
        - kubernetes
      status:
        phase: Active
      

      Steps to reproduce:

      • install Serverless 1.26 on OCP 4.11
      • upgrade to Serverless 1.27
      • upgrade cluster to OCP 4.12.0 RC8
      • check 3scale-kourier-gateway (the Deployment is there but pods won't start, the result is unavailable Knative services)

      BTW, serverless-operator E2E pass on OCP 4.12 as can be seen in this run, so it must be related to Serverless upgrade 1.26->1.27 followed by OCP upgrade.

              skontopo@redhat.com Stavros Kontopoulos (Inactive)
              mgencur@redhat.com Martin Gencur
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: