Ctrl K
ComunidadGuías…

test/clustermode/oauth2-proxy.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
apiVersion: v1
kind: Secret
metadata:
  name: oauth2-proxy
  namespace: spinoza
type: Opaque
stringData:
  client-secret: oauth2-proxy-client-secret
  cookie-secret: "00000000000000000000000000000000"
  proxy-secret: a-cluster-mode-proxy-secret-that-is-long-enough
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: oauth2-proxy
  namespace: spinoza
data:
  alpha.yaml: |
    server:
      bindAddress: 0.0.0.0:4180
    upstreamConfig:
      upstreams:
        - id: spinoza
          path: /
          uri: http://spinoza.spinoza.svc.cluster.local:8080
          passHostHeader: true
          proxyWebSockets: true
          timeout: 60s
    providers:
      - id: keycloak
        name: Keycloak
        provider: oidc
        clientID: oauth2-proxy
        clientSecretFile: /var/run/secrets/oauth2-proxy/client-secret
        loginURL: https://keycloak.localtest.me:8443/realms/spinoza/protocol/openid-connect/auth
        redeemURL: http://keycloak.keycloak.svc.cluster.local:8080/realms/spinoza/protocol/openid-connect/token
        profileURL: http://keycloak.keycloak.svc.cluster.local:8080/realms/spinoza/protocol/openid-connect/userinfo
        backendLogoutURL: "http://keycloak.keycloak.svc.cluster.local:8080/realms/spinoza/protocol/openid-connect/logout?id_token_hint={id_token}"
        skipClaimsFromProfileURL: true
        scope: openid profile email
        code_challenge_method: S256
        oidcConfig:
          issuerURL: https://keycloak.localtest.me:8443/realms/spinoza
          skipDiscovery: true
          jwksURL: http://keycloak.keycloak.svc.cluster.local:8080/realms/spinoza/protocol/openid-connect/certs
          insecureSkipNonce: false
          emailClaim: email
          groupsClaim: groups
          userIDClaim: preferred_username
          audienceClaims:
            - aud
    injectRequestHeaders:
      - name: X-Forwarded-User
        values:
          - claimSource:
              claim: preferred_username
      - name: X-Forwarded-Groups
        values:
          - claimSource:
              claim: groups
      - name: X-Spinoza-Proxy-Secret
        values:
          - secretSource:
              fromFile: /var/run/secrets/oauth2-proxy/proxy-secret
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oauth2-proxy
  namespace: spinoza
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: oauth2-proxy
  template:
    metadata:
      labels:
        app.kubernetes.io/name: oauth2-proxy
    spec:
      automountServiceAccountToken: false
      securityContext:
        runAsNonRoot: true
        runAsUser: 2000
        runAsGroup: 2000
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: oauth2-proxy
          image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.3
          imagePullPolicy: IfNotPresent
          args:
            - --alpha-config=/etc/oauth2-proxy/alpha.yaml
            - --redirect-url=https://spinoza.localtest.me:8443/oauth2/callback
            - --email-domain=*
            - --reverse-proxy=true
            - --skip-provider-button=true
            - --cookie-name=_spinoza_oauth2_proxy
            - --cookie-secure=true
            - --cookie-httponly=true
            - --cookie-samesite=lax
          env:
            - name: OAUTH2_PROXY_COOKIE_SECRET
              valueFrom:
                secretKeyRef:
                  name: oauth2-proxy
                  key: cookie-secret
          ports:
            - name: http
              containerPort: 4180
          readinessProbe:
            httpGet:
              path: /ping
              port: http
            periodSeconds: 2
          livenessProbe:
            httpGet:
              path: /ping
              port: http
            periodSeconds: 10
          resources:
            requests:
              cpu: 20m
              memory: 32Mi
            limits:
              memory: 128Mi
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL
          volumeMounts:
            - name: config
              mountPath: /etc/oauth2-proxy
              readOnly: true
            - name: secrets
              mountPath: /var/run/secrets/oauth2-proxy
              readOnly: true
      volumes:
        - name: config
          configMap:
            name: oauth2-proxy
        - name: secrets
          secret:
            secretName: oauth2-proxy
---
apiVersion: v1
kind: Service
metadata:
  name: oauth2-proxy
  namespace: spinoza
spec:
  selector:
    app.kubernetes.io/name: oauth2-proxy
  ports:
    - name: http
      port: 4180
      targetPort: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: oauth2-proxy
  namespace: spinoza
spec:
  ingressClassName: nginx
  rules:
    - host: spinoza.localtest.me
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: oauth2-proxy
                port:
                  name: http
  tls:
    - secretName: localtest-tls
      hosts:
        - spinoza.localtest.me