RyanKor / mlops-lifecycle-management

mlops 생애 주기 관리 및 배포 학습하기
0 stars 0 forks source link

[Bug Report] 403 Could not find CSRF cookie XSRF-TOKEN in the request #5

Closed RyanKor closed 2 years ago

RyanKor commented 2 years ago

Bug 상황

image

이에 대한 대처

어려운 부분

RyanKor commented 2 years ago

APP_SECURE_COOKIES에 대한 PR

https://github.com/kubeflow/kubeflow/pull/5764/files#diff-ca506323aee2fbb4dc25b3de30b975fa1a4d3c1faba9edf79a31a99b37d80242

APP_SECURE_COOKIES 설정해야하는 컴포넌트 리스트

https://github.com/kubeflow/kubeflow/issues/5803#issuecomment-848405891

RyanKor commented 2 years ago

MySolution

사실 올바른 해법이라고 보기는 어렵지만, http 접근 해용을 해주기 위해 manifest/apps/jupyter/jupyter-web-app/upstream/basedeployment.yaml 파일의 내용을 다음과 같이 수정했습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "false"
    spec:
      containers:
      - name: jupyter-web-app
        image: public.ecr.aws/j1r0q0g6/notebooks/jupyter-web-app
        ports:
        - containerPort: 5000
        volumeMounts:
        - mountPath: /etc/config
          name: config-volume
        - mountPath: /src/apps/default/static/assets/logos
          name: logos-volume
        env:
        - name: APP_PREFIX
          value: $(JWA_PREFIX)
        - name: UI
          value: $(JWA_UI)
        - name: USERID_HEADER
          value: $(JWA_USERID_HEADER)
        - name: USERID_PREFIX
          value: $(JWA_USERID_PREFIX)
        - name: APP_SECURE_COOKIES # 새로이 추가한 부분
          value: "false" # 새로이 추가한 부분
      serviceAccountName: service-account
      volumes:
      - configMap:
          name: config
        name: config-volume
      - configMap:
          name: jupyter-web-app-logos
        name: logos-volume

위와 같이 deployment.yaml을 수정하고 manifest 폴더 경로에서 kustomize build apps/jupyter/jupyter-web-app/upstream/overlays/istio | kubectl apply -f -를 다시 수행하니, jupyter notebook이 생성되는 것을 볼 수 있었습니다.

manifest 레포에 APP_SECURE_COOKIES 설정 값이 없어서 왜 이 내용이 레포에 빠져 있나 했더니, https 설정이 기본이라 http 접근을 권장하지 않는 상황 때문에 설정이 안되어 있다고 하네요...