목록분류 전체보기 (78)
중요한건 꺾이지 않는 맥북

글을 작성하기 전에, 저는 현재 회사에서 ML 플랫폼을 개발,운영하고 있으며 MLOps 플랫폼으로 고도화를 진행중에 있습니다. MLflow를 제공하려고 하는데, 각 사용자의 Namespace마다 띄워주기에는 컴퓨팅 자원이 기하급수적으로 늘어날 것으로 예상됩니다. 따라서, MLflow를 단일 서버로 서로 다른 여러 사용자에게 서비스를 제공할 수 있는 Multi-Tenant MLflow로 구축하려합니다. Multi-Tenant MLflow를 지원하는 MLflow Authentication 컴포넌트는 Document에서는 2.5.0 버전부터 제공하는 반면, github에서는 v2.3.0 부터 프로젝트에 추가된 것으로 확인됩니다. (아래 링크 참조) https://github.com/mlflow/mlflow/t..

주피터 컨테이너를 생성해주는 Kubespawner를 활용하여 구축한 쿠버네티스 클러스터는 마스터 노드와 워커 노드가 별도의 방화벽 정책이 필요하지 않았다. 하지만, 공공 클러스터의 보안 정책에 따라 앞으로 추가되는 워커 노드들은 방화벽(https://kubernetes.io/docs/reference/networking/ports-and-protocols/)을 열어서 클러스터를 구성해야했다. 하지만, 주피터 컨테이너를 띄웠을때 이슈가 발생했다. # k get pods -A |grep jeawoo0594-02-2mpqp9r1 jeawoo0594-02-2mpqp9r1 jupyter-jeawoo0594-2d02-2mpqp9r1 1/1 Running 0 2d1h test1-01-es02mn3h 파드가 정상적으로..
사용자가 접근하는 앱을 배포시, pod에서 curl, telnet과 같은 네트워크 통신 확인 명령어 설치를 안한 경우 k exec -it {pod} -n {namespace} -- bash # pod 에 bash 쉘로 접속한뒤 echo > /dev/tcp/{ip}/{port} 위 명령어로 해당 pod에서 외부 ip:port 로 통신 확인이 가능합니다. 해당 방법은 bash의 built-in 기능이라고 합니다. [통신 성공시] 해당 포트가 열려있는 경우 echo $? 위 명령어로 다시 확인하면 0으로 응답이 온다. 해당 포트가 열려있지 않은 경우 아래처럼 connection refused 발생한다. bash: connect: Connection refused bash: /dev/tcp/10.41.0.42/..

Kubeflow Pipeline python api code import kfp from kfp import dsl from functools import partial from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score import numpy as np from kfp.components import InputPath, OutputPath, create_component_from_func @partial( create_compone..
nginx를 restart 후 API에서 response값이 잘려서 리턴되어, json이 아닌 string으로 응답하는 이슈를 발견하였다. 따라서, nginx access log의 $body_bytes_sent 구문을 확인하였더니 같은 API 의 첫번째 호출보다 두번째 호출의 response 값의 크기가 절반으로 리턴되는 이슈를 확인하고, 캐싱처리가 지원되는 GET 메소드 API 에서만 발생하는 이슈로 확인되었다. 따라서, 아래와 같은 Config 설정을 넣어줘야한다. server { listen 8080; charset UTF-8; location / { uwsgi_pass django; include /etc/nginx/uwsgi_params; proxy_read_timeout 2400; uwsgi_..

TLS - Transport Layer Security (전송계층보안) *출처: https://lion-king.tistory.com/entry/%EB%B3%B4%EC%95%88-MTLS-%EB%9E%80-Mutual-TLS-Authentication SSL 및 TLS는 네트워크를 통해 작동하는 서버, 시스템 및 응용프로그램간에 인증 및 데이터 암호화를 제공하는 암호화 프로토콜 (예시. 웹 브라우저가 웹 서버에 대한 보안 연결을 생성하는 프로토콜) SSL은 TLS의 이전 프로토콜이다. SSL은 현재 프로토콜 사용이 폐기되었고, TLS를 사용해야 한다. * X.509 인증서 TLS의 핵심은 PKI (공개 키 인프라)와 특히 X.509 인증서 암호화에서 X.509는 공개 키 인증서의 형식을 정의하는 표준이고..
Find the resources that are not deleted kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n and delete api resources

간단하게 k8s CLI (kubectl)로 kubeflow에 유저를 추가하는 방법을 정리한다. User 추가 dex 에서 ID/PW를 생성한다. 아래와 같이 staticPassword 항목에 User 정보를 추가하고 hash에 bcrypt된 패스워드 입력한다. $ kubectl edit cm -n auth dex #################################################################################### ... - email: testuser@mz.co.kr hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72 # https://github.com/dexidp/dex/pull/16..