728x90 반응형 Dev.115 Django: ‘WSGIRequest' object has no attribute 'data' ‘WSGIRequest' object has no attribute 'data' 에러는 DRF 와 헷갈려서 자주 마주치는 에러 현상 Django 의 WSGIRequest 객체에 data 속성이 없다는 뜻. 일반적으로 Django 의 HttpRequest 객체에서 data 에 접근할 때 발생 data → POST 로 HttpRequest 에 맞게 변경 request.data.get("image") request.POST.get("image") data 는 일반적으로 restframework 에서 사용됨 Dev./Django & DRF 2023. 10. 18. Python : functools.cmp_to_key() def compare(x, y): t1 = x + y t2 = y + x return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1, 작다면 -1, 같으면 0) def solution(numbers): answer = '' n = [str(x) for x in numbers] # 리스트 컴프리헨션 문자 배열로 변환하여 n 에 저장 print("before sorted: ", n) n = sorted(n, key=functools.cmp_to_key(compare), reverse=True) print("after sorted: ", n) answer = str(int(''.join(n))) return answer # 예시 데이터 1 numbers1 = .. Dev./Python 2023. 10. 17. Prometheus: Django 와 연결해보기 Prometheus 도커로 열어보기 Django-prometheus 프로메테우스가 장고를 모니터링하게 만들기 위해서는 몇가지 설정을 변경해주어야 한다. 장고 프로메테우스 설치 pip install django-prometheus 파이썬 settings.py 에 설치내용과 미들웨어 추가 INSTALLED_APPS = [ ... 'django_prometheus', ... ] MIDDLEWARE = [ 'django_prometheus.middleware.PrometheusBeforeMiddleware', # All your other middlewares go here, including the default # middlewares like SessionMiddleware, CommonMiddleware.. Dev./Prometheus & Grafana 2023. 10. 16. Github Actions: Version Release Release version control 지금까지 이미지의 tag 를 그냥 타임스탬프를 이용하여 구분짓고 latest 로 기져오면서 코드를 짜고 있었는데, 실제 이미지의 버전정보를 그냥 아무 숫자나 가져다 쓰지는 않는다고 한다. 그래서 github 에서 repo 의 태그를 생성하고 버전으로 사용하는 방법을 찾아보자. github actions marketplace 에서 원하는 기능을 제공하는 소스코드를 찾았다. 소스코드의 메커니즘을 보면 secrets 에서 토큰을 받아와 접근 인가를 받고 steps 에 태그를 생성해서 가져다 쓰는 것 같다. 태그를 커스터마이징 하거나, 브랜치 별로 선택할 수도 있는 것 같아서 default 를 false 로 해두고 commit message 로 버전을 컨트롤 할 수 있.. Dev./Github Actions 2023. 10. 15. Kubernetes: 안전하게 업로드하기 by using Kubeseal Sealing helm-chart 로 만든 데이터를 argocd 에서 관리하려면 모든 정보가 담긴 파일들이 git 에 올라가 있어야 한다. 이때 민감한 정보를 어떻게 핸들링 해야하는지 고민이 많았는데, kubeseal 이라는 오픈소스를 사용해보면 어떨까 한다. Sealed Secrets 는 쿠버네티스에서 비밀 정보를 안전하기 관리하기 위한 도구라고 한다. 클러스터 내 컨트롤러와 클라이언트 측 유틸리티인 kubeseal 로 구성되며 kubeseal 이 SealedSecret 이라는 리소스를 생성하여 클러스터 내에서 일반 Secret 으로 사용된다. 스코핑 설정도 가능하고 argocd 와 함께 사용하여 helm chart 를 안전하게 배포할 수 있다고 한다. Installation brew install k.. Dev./Kubernetes & Helm 2023. 10. 14. ArgoCD: Deploy App Deploy app 연결된 원격 저장소에 있는 helm-chart 를 배포 시켜보자. 우선 파일경로의 위계를 지정하고 폴더 경로를 path 에 집어 넣어 배포구조를 만든다. 이 후 사용할 values.yaml 파일을 정한 뒤 배포 이 후 SYNC 로 창을 열어서 SYNCHRONIZE 하면 배포가 잘 된 것을 확인 할 수 있다. Deploy test 배포가 잘 되었는지 확인해보자. local 에서 코드 업데이트 이후 원격 저장소로 push 를 하게 되면 코드에 변동사항이 생겼으니 argoCD 에서 해당 정보를 싱크체크를 하고 다른 점이 있으면 sync status 를 out of 로 변경하게 된다. 다시 SYNC 로 창을 열어서 SYNCHRONIZE 하면 정상적인 상태로 돌아오는 것을 확인 할 수 있다. .. Dev./ArgoCD 2023. 10. 12. ArgoCD: Git repo referencing Argo CD guestbook 이라는 앱을 만들어서 배포를 동작시켜보기 개인 repo 를 가져올 때, github 주소를 가져와서 url 에 넣고 path 로 폴더 경로를 지정해주면 된다. 설정해야하는 부분 애플리케이션 이름 repo URL Path 클러스터 URL 네임 스페이스 replicas 등 등 APP details 로 가서 앱 관련 정보들을 쉽게 수정이 가능하다. replicas: 3 → 2 시각적으로 상태변경에 대해 확인이 가능하다. Private repo 만약, repo 가 public 이 아니라 private 으로 되어 있다면 인증과정을 거쳐야 하는데 인증 방식에는 여러가지가 있으므로 편한 방법을 택하면 된다. # refer to official doc https://argo-cd.rea.. Dev./ArgoCD 2023. 10. 11. ArgoCD: 설치해서 띄워보기 Kubernetest - Helm 으로 CD 구성하기 feat. ArgoCD ArgoCD 는 쿠버네티스 클러스터에 지속적인 배포를 가능하게 하는 도구이다. Git repo 를 레퍼런스로 사용하여 클러스터의 현재 상태와 저장소의 원하는 상태를 동기화한다. # examp apiVersion: argoproj.io/v1alpha1 kind: Application metadata: # app 이름 name: my-app namespace: argocd spec: project: default # git repo 에서 helm 차트가 있는 경로를 찾아서 소싱 source: repoURL: targetRevision: HEAD path: my-chart/ destination: server: namespace: m.. Dev./ArgoCD 2023. 10. 10. Helm: Apply Actual Application App 적용하기 sqlite 버전이 아닌 실제 버전으로 pg DB 와 연결하자 # values.yaml # tag 를 sqlite 이서 일반 버전으로 image: repository: likelion-cr-mh.kr.ncr.ntruss.com/lion-app tag: 0.2.0 pullPolicy: IfNotPresent imagePullSecrets: - name: regcred nameOverride: "" fullnameOverride: "" replicaCount: 1 service: type: LoadBalancer port: 80 targetPort: 8000 # pg 를 쓸 예정이기 때문에 db 용 서비스 value 정의 dbService: type: NodePort port: 5432 co.. Dev./Kubernetes & Helm 2023. 10. 9. Helm: Apply to simple code Apply to Simple code 이미지를 불러와 차트에 적용시켜보자. helm create simple-web # templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }} labels: {{- include "simple-web.labels" . | nindent 4 }} spec: minReadySeconds: 10 replicas: {{ .Values.replicas }} selector: matchLabels: {{- include "simple-web.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- incl.. Dev./Kubernetes & Helm 2023. 10. 6. Helm: 차트 작성 코드로 차트를 작성해 보면서 헬름 차트 작성법을 익혀보자. 내 코드로 작성해보기 values.yaml 파일과 templates 폴더 아래에 있는 모든 내용 삭제하고, 다시 환경별로 코드를 사용하기 위한 작업을 진행해 주자. # templates/configmap.yaml apiVersion: v1 kind: configMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" helm install tiger ./mychart # result kimminhyeok@Ivans-Mac k8s % helm install tiger ./mychart NAME: tiger LAST DEPLOYED: Wed Sep 13 13:36:5.. Dev./Kubernetes & Helm 2023. 10. 5. Helm: 쿠버네티스를 관리하는 툴 Helm 헬름은 복잡한 쿠버네티스 애플리케이션을 편리하게 정의하여 설치하거나 업그레이드 할 수있는 쿠버네티스 관리 툴이다. 홈페이지 MacOS 설치 brew install helm 시작하기 create >> 기본 틀인 차트를 생성 (리소스를 담는 그릇) helm create mychart 헬름은 차트를 구성하게 되는데, 쿠버네티스에서 필요했던 부분들을 차트형태로 표현해주기 때문이다. install >> chat 정보를 이용해서 release helm install mychart ./mychart # result kimminhyeok@Ivans-Mac k8s % helm install mychart ./mychart NAME: mychart LAST DEPLOYED: Wed Sep 13 13:09:24 2.. Dev./Kubernetes & Helm 2023. 10. 4. 이전 1 2 3 4 5 ··· 10 다음 728x90 반응형