[LLM] LM StudioLM Studio는 컴퓨터에서 로컬 LLM을 실행하기 위한 데스크톱 애플리케이션이다.localhost에서 실행되는 API 서버를 통해 LM Studio 내에서 로드한 LLM을 사용할 수 있다. 요청과 응답은 OpenAI의 API 형식을 따르며,현재 OpenAI를 사용하는 코드가 localhost:PORT 대신 로컬 LLM을 사용하도록 지정한다. 지원하는 EndpointGET /v1/modelsPOST /v1/chat/completionsPOST /v1/embeddings POST /v1/completions 로컬 서버 구성1. 공식 홈페이지에서 OS에 맞는 LM Studio를 설치한다. 👾 LM Studio - Discover and run local LL..
[K8s][CKS] Admission Controller쿠버네티스의 접근제어에는 크게 3가지가 있다.Authentication접속한 사람의 신분을 시스템이 인증Authorization누가 어떤 권한을 가지고 어떤 행동을 할 수 있는지 확인Admission Control인증과 권한 확인 이후에 추가적으로 요청 내용에 대한 검증이나 요청 내용을 수정 할 때 사용 이 중 쿠버네티스의 Admission Control은 요청이 인증되고 권한이 부여된 후에Kubernetes API 서버에 대한 승인한 요청과 관련된 객체를 수정 할 수 있다. Admission Controller PluginsAdmission Controller는 관리자의 특정 정책을 수행하는 주체라고 볼 수 있다.다시 말해 Admission Con..
[Linux] umaskumask 란?umask는 사용자 파일 생성 모드 마스크(user file-creation mode mask)를 의미한다.이는 새로 생성된 파일과 디렉터리에 대한 기본 권한 설정을 결정하는 Linux 명령어다. 새로운 파일이나 디렉터리가 생성될 때, 시스템은 기본 권한을 할당한 후이 권한을 umask에 의해 수정한다. 권한 이해하기linux에서 권한은 세 가지 유형이 있으며, 권한은 세트로 구분된다.읽기(r)파일이나 디렉터리의 내용을 볼 수 있다.쓰기(w)파일이나 디렉터리의 내용을 수정할 수 있다.실행(x)파일을 실행하거나 디렉터리에 접근할 수 있다.사용자(u)파일의 소유자그룹(g) 파일이 속한 그룹기타(o)모든 다른 사용자각 세트는 세 개의 비트(읽기, 쓰기, 실행)를 가지고 있..
[LLM] 프롬프트 엔지니어링프롬프트란?프롬프트는 특정 작업을 수행하도록 생성형 AI에 요청하는 자연어 텍스트다.생성형 AI 시스템이 정확하고 연관성 있는 응답을 생성하기 위해서는 컨텍스트와 세부정보가 필요하다. 프롬프트를 체계적으로 설계하면, 보다 의미있고 유영한 결과물을 얻을 수 있기 때문에프롬프트 엔지니어링에서는 AI 시스템에서 원하는 결과를 얻을 때까지 프롬프트를 지속적으로 조정한다. 💡 프롬프트 엔지니어링의 핵심 - 사용자의 요청을 정확하게 파악하고 그에 맞는 질문을 AI 모델에 적용한다.- 사용자는 모델을 활용하여 사용자의 요청을 최적화된 프롬프트로 변환하는 능력을 갖추어야 한다.- 프롬프트를 효과적으로 설계하기 위해, 사용하는 LLM 모델의 강점과 약점에 대한 깊은 이해가 필요하다. 프롬프..
[Linux] failed to enable unit: Unit file /lib/systemd/system/nfs-common.service is masked nfs와 mount를 하기 위해 nfs 유틸 패키지인 nfs-common을 설치해야 했는데,해당 패키지를 설치 후 상태 확인 시 다음과 같은 상태인 것을 확인했다. 해당 패키지가 masked 되어 사용할 수 없다는 뜻인데, 이를 unmask 해주면 사용이 가능하다.start 명령어를 사용하면 nfs-common.service가 /dev/null에 심볼릭 링크가 걸려있다는 메시지를 확인 할 수 있다. 해결을 위해 먼저 해당 파일을 제거 후 데몬을 리로드한다.sudo rm /lib/systemd/system/nfs-common.servicesudo ..
[K8s] SecurityContextSecurityContext는 pod 또는 컨테이너에 대한 권한 및 액세스 설정을 정의한다.SecurityContext는 다음과 같은 설정들이 포함된다.privileged나 unprivileged로 실행됨임의적 접근 제어: 파일과 같은 객체에 대한 접근 권한은 UID와 GID를 기준으로 결정SELinux: object에 보안 label이 할당됨Linux 기능: 프로세스에 일부 권한을 부여하지만, 루트 사용자의 모든 권한을 부여하진 않음AppArmor: 프로그램 프로필을 사용하여 개별 프로그램의 기능을 제한Seccomp: 프로세스의 시스템 호출을 필터링다음은 pod나 컨테이너에 대한 manifest 파일에 추가가 가능한 파라미터다.allowPrivilegeEscalat..
[K8s][CKS] 감사(auditing)쿠버네티스의 감사는 클러스터의 작업 순서을 문서화하는 보안 관련 시간별 레코드 세트를 제공한다.클러스터는 사용자, 쿠버네티스 API를 사용하는 애플리케이션 및 컨프롤 플레인 자체에서 생성된 활동을 감사한다. 감사기록은 Kube-apiserver 컴포넌트 내에서 수명주기를 시작하며, 각 단계에서 각 요청은 감사 이벤트를 생성하고감사 이벤트는 특정 정책에 따라 사전 처리되고 백엔드에 기록된다. 감사 정책 감사 정책은 기록해야 하는 이벤트와 포함해야 하는 데이터에 대한 규칙을 정의한다.정의된 감사 수준은 다음과 같다.None이 규칙에 해당되는 이벤트는 로깅하지 않는다.Metadata요청 메타데이터는 로깅하지만 요청/응답 본문은 로깅하지 않는다.Request이벤트 메타데..
[Docker] E: Problem executing scripts APT::Update::Post-Invoke 도커 이미지를 빌드 시 apt update 명령어에서 다음과 같은 오류가 발생했다.Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true' 확인해보니 도커엔진의 버전이 낮아서 발생하는 오류라고 한다.해당 버전은 10.20.8 버전이였고, 10.20.12 버전으로 업그레이드 해서 진행하니 이미지가 잘 빌드됐다. 업그레이드는 다음과 같이 진행했다. 현재 버전 확인dpkg -li..
[AWS] S3의 ACL 구성S3 버킷에 대한 액세스 권한을 관리할 때, ACL(액세스 제어 목록)을 사용할 수 있다.콘솔 ,aws cli, SDK를 사용하면 리소스에 대해 권한 부여를 추가할 수 있다. 버킷 및 객체 권한은 서로 독립적이며, 객체는 해당 버킷으로부터 권한을 상속하지 않는다. 최신의 대부분은 더 이상 ACL을 사용 할 필요가 없으며. 각 객체에 대해 액세스를 개별적으로 제어할 필요가 있는 드문 상황을 제외하고는 ACL을 비활성화 한 채로 두는 것이 좋다. 다만 버킷의 설정에 따라 sync나 cp 작업을 할 때, 대상 버킷에 복제가 되더라도 객체의 권한이 없어 다운로드/읽기가 안되는 경우가 있었다. 그때 사용할 수 있는 명령어를 알아보자. ACL 옵션AWS CLI 버전 2 부터는 소스에서..
[K8s][CKS] 컨테이너의 불변성 보장컨테이너는 기본적으로 변경이 불가능하지만, 내부 업데이트를 수행할 수 있다.파일을 pod에 직접 복사하거나, 셀에 접속해서 변경하는 등 다양한 방법으로 작업을 수행할 수 있다. 이를 방지하기 위해선, pod가 시작된 후에는 파일시스템에 쓸 수 없도록 해야한다.이 때 사용할 수 있는게 security contexts다. Security Contexts불변성 보장하기 위해 readOnlyRootFilesystem=true를 사용한다.다음과 같은 manifest file을 임의로 생성해보자.k run nginx --image=nginx --dry-run=client -o yaml > nginx.yaml 해당 yaml 파일의 container단에 securityConte..
[K8s][CKS] TLS (Cipher-Suites)쿠버네티스에서 클라이언트와 API 서버, 그리고 구성 요소간 통신은 상호 TLS를 통해 이루어진다.🤔 TLS(Transport Layer Security)?전송 계층 보안(TLS)은 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계되어 널리 채택된 보안 프로토콜이다. TLS는 공개 키 암호화를 사용하여 작동하며, 새로운 암호가 발견될 때마다 적용이 되어야 한다. 쿠버네티스 보안을 목적으로하는 TLS 소프트웨어 패키지의 경우, 컨트롤 플레인의 구성요소와 etcd가 포함되며, 연결이 설정될 때 사용할 수 있는 암호를 제한하는 기능이 있다. 사용 가능한 암호를 강력한 최신 암호로 제한하면,악용이 가능한 이전 클라이언트 암..
[etc] Containerd쿠버네티스 버전 1.24부터 컨테이너 런타임으로 docker의 지원이 종료되고,containerd로 전환이 되었다. node에 접속해서 생성된 컨테이너 ID를 확인할 일이 있어, 습관적으로 docker ps 명령어를 실행했는데아무것도 없어서 당황했다 ... 😋 node를 조회하면 컨테이너 런타임이 containerd인 것을 확인할 수 있다.k get node -o wide containerd는 ctr 명령어를 확인하여 컨테이너의 정보를 확인할 수 있다.containerd는 쿠버네티스와 같이 네임스페이스를 사용한다. ctr namespace list 다음 명령어를 통해, k8s.io 네임스페이스 내의 컨테이너의 리스트를 확인 할 수 있다.ctr -n k8s.io contain..