-
Angular Interceptor
Angular Interceptor 사용중 header 처리 오늘 생긴일인데 기존처럼 httpclient로 post데이터를 날리는데 에러가 나기 시작했다. request를 확인해보니 content-type이 text/plain으로 되있다. 분명 application/json으로 넣어둿는데. 뭐가 문제일가? create(resource: any) { return this.http .post(this.url, JSON.stringify(resource), { headers: { 'Content-Type': 'application/json' } }) .pipe(catchError(this.handleError)); } 분명 보내고 있다. 그런데 얼마전에 interceptor를 바꾼 기억이 나서 확인해보았다. Interceptor코드는 다음과 같다. if (req.url.startsWith(environment.apiUrl)) { return from(this._authService.getAccessToken().then(token => { //token을 가져와서 const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`); //header에 세팅을 한다. const authReq =...
-
kubernetes upgrade
kubernetes version upgrade 마스터 노드를 먼저 하고 워커 노드를 나중에 한다. kubeadm 을 먼저 업그레이드하고 kubelet kubectl을 나중에 업그레이드한다. kubeadm master01 ssh master01 yum list --showduplicates kubeadm --disableexcludes=kubernetes yum install -y kubeadm-1.17.3-0 --disableexcludes=kubernetes kubeadm version #확인 kubectl drain master01 --ignore-daemonsets # master01을 클러스터에서 뺀다. 업그레이드후 나중에 다시 붙이자. kubeadm upgrade plan # 업그레이드 플랜내용을 보여준다. 마지막 커맨들를 실행하자. kubeadm upgrade apply v1.17.3 한참 뭐를 한다. 마지막으로 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.17.0". Enjoy!...
-
kubernetes add node
kubernetes node 추가 kube cluster nodelist 에서 삭제 kubectl get nodes NODENAME=node13 kubectl drain $NODENAME # kubectl drain $NODENAME --ignore-daemonsets --delete-local-data kubectl delete node $NODENAME kubectl get nodes 이제 클러스터에서 빠졌다. 노드 재설치 새로 노드를 재설치 kubernetes를 맞는 버전을 설치해야한다. 그냥 설치하면 최신 버전이 자동설치 되버린다. yum remove kubeadm kubelet kubectl -y yum install kubeadm-1.16.1 kubelet-1.16.1 kubectl-1.16.1 -y 기존 노드를 사용하려면 kubeadm reset #delete kube info on this node 이러면 된다. 재설치 한 노드를 다시...
-
WSL2 Ubuntu
wsl2 윈도우에서 리눅스 사용하기 윈도우 업데이트가 다 되있다고 가정하고 진행 install wsl2 powershell을 열고 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Microsoft Store를 열고 ubuntu 18.04 배포를 선택합니다. https://www.microsoft.com/en-us/p/ubuntu-1804-lts/9n9tngvndl3q?rtc=1&activetab=pivot:overviewtab 설치하고 나면 실행합니다. 기본 유저와 비번을 넣어야합니다. cmd에서 bash라고치면 바로 접속됩니다. 저는 root를 사용하고싶어서 다음처럼 진행하였습니다. bash로 접속한상태에서 sudo passwd root xxx 루트 비번을 변경하고 cmd를 열어서 ubuntu1804.exe config --default-user root window terminal을 설치합니다. https://github.com/microsoft/terminal/releases 여기서 다운받아서 설치합니다. cmd, powershell, bash를 다 할수 잇는 터미널입니다....
-
Delete Secret File on Git
Delete Secret File On Git git 에 커밋하지 말아야 할 파일을 커밋한 경우 git rm filename를 해도 히스토리에는 그대로 남아있게 된다. 이 파일을 히스토리에서도 지워보자. 이 파일은 약 500메가나 되는 커밋하지 말아야할 파일이였다. git filter-branch 사용 file git rm adtree-20200205 git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch adtree-20200205' \ --prune-empty --tag-name-filter cat -- --all git push --force directory git filter-branch --force --index-filter \ 'git rm -r --cached --ignore-unmatch 폴더명' \ --prune-empty -- --all...
-
KVM (Kernel-based Virtual Machine, KVM)
KVM (Kernel base virtual machine) - centos 7 CPU가 가상화 지원하는 확인 grep -E '(vmx|svm)' /proc/cpuinfo 뭐라고 마구마구 나와야함. module load 확인 lsmod | grep kvm install yum -y install epel-release -y yum install qemu-kvm qemu-img -y yum install libvirt libvirt-client virt-install virt-top virt-viewer -y yum install bridge-utils libguestfs-tools -y # module 확인 lsmod | grep kvm > kvm 636931 0 > irqbypass 13503 1 kvm systemctl start libvirtd systemctl enable libvirtd systemctl list-unit-files |...
-
debian 6
debain 6 install 오랜만에 debian 6를 설치해야 할 일이 생겼다. iso를 받는거부터 debian사이트에서 없어졋다 end of life라서 archive로 가서 받아야한다. https://cdimage.debian.org/mirror/cdimage/archive/6.0.10/amd64/iso-dvd/ 이 사이트에서 받을수 있엇다. 1번 dvd만 있으면 된다. dell 장비 드라이버를 지원하지 않아서 네트워크가 잡히지 않는다. 설치 중간에 usb를 넣으라는 것이 있다. https://teamsmiley.github.io/assets/bnx2-mips-09-5.0.0.j3.fw https://teamsmiley.github.io/assets/bnx2-rv2p-09-5.0.0.j3.fw 두개의 파일을 받아서 usb에 넣고 설치시 로드해주면 된다. apt repository를 업데이트해 줘야 한다. rm /etc/apt/sources.list && \ echo "deb http://archive.debian.org/debian squeeze main non-free" >> /etc/apt/sources.list && \ echo "deb http://archive.debian.org/debian...
-
Prometheus 모니터링
서버나 프로그램을 모니터링 하기 위해 사용한다. 특징은 pull방식이라는것. 이것이 신의 한수 : Prometheus 서버가 노드나 프로그램등에 데이터를 요청하면 노드나 프로그램등은 데이터를 보내주면 된다. 노드나 프로그램등에서 전혀 리모트 서버에 대해 알 필요가없고 데이터의 전달에 대해서 고민하지 않아도 된다. push : 각각 모니터되는 서버에서 주기적으로 모니터링 서버로 데이터를 보내는 방식 pull : 각각 모니터되는 서버에서 데몬만 돌고있고 모니터링 서버에서 request를 던저서 pull하는 방식 구성 prometheus : 데이터를 요청하고 가져온 데이터를 저장하고 쿼리함 exporter: 요청을 받으면 데이터를 만들어서...
-
kubernetes redis
redis을 쿠버네티스에 배포 연습 다음과 같은 두가지 사용 패턴이 있다. 단독 서버로 redis를 사용하는경우 replicatioh을 사용하는 경우 단독 서버를 사용해보자. docker hub에 있는 기본 redis는 환경변수가 많이 안다. 그리고 설정 파일위치를 못찾겠어서 bitnami/redis 를 사용한다. 환경변수가 많아서 설정하기가 쉽다. --- apiVersion: v1 kind: Service metadata: namespace: prod name: redis labels: app: redis spec: type: LoadBalancer loadBalancerIP: 192.168.0.79 ports: - port: 6379 targetPort: 6379 selector: app: redis --- apiVersion: apps/v1 kind: Deployment metadata: namespace: prod name:...
-
kubernetes pod service에서 연결하기
mysql을 쿠버네티스에 배포 연습 Run a Replicated Stateful Application https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/ pv가 dynamic provision이 되면 아주 잘 된다. 그런데 마지막에 문제가 master 에 접속을 하는것인데 For writes, you must instead connect to the master: mysql-0.mysql. 쿠버네티스 내부에서는 이렇게 mysql-0.mysql로 접속하면 된다. 그럼 dns lookup을 통해 잘 된다. 문제는 외부에서 접속할때 어디로 가야할지 잘 모르겟다는것이다. 지인에게 물어본결과 다음처럼 하면된다. 먼저 pod에 label을 가져온다. kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS mysql-0 2/2 Running 0...