-
mfa ux
multi factor authenticate ux 요즘은 로그인하면 핸드폰으로 문자를 보내서 또 넣어야하는 경우가 있다. 비교해 보았다. github twitter robinhood 결론 나는 github 가 좋다. 이 부분에서 복사가 가능하기 때문에. 그리고 당연히 답장같은건 하지 않을거니 쓸모없는 부가 설명도 필요없어 보인다. 다들 뭐가 좋으신가요?
-
chrome tab rotate extension
탭을 로테이션 시켜주는 크롬 익스텐션 주식차트를 계속 로테이션으로 보여주는 생각을 하다가 찾아보았다. github repository 설정을 저장할 git repo를 하나 만들었다. 다음 파일을 만들고 커밋/푸시한다. { "settingsReloadIntervalMinutes": 1, "fullscreen": false, "autoStart": false, "lazyLoadTabs": false, "websites": [ { "url": "https://elite.finviz.com/quote.ashx?t=NET", "duration": 10, "tabReloadIntervalSeconds": 5 }, { "url": "https://elite.finviz.com/quote.ashx?t=AMZN", "duration": 10, "tabReloadIntervalSeconds": 5 }, { "url": "https://elite.finviz.com/quote.ashx?t=TSLA", "duration": 10, "tabReloadIntervalSeconds": 5 }, { "url": "https://elite.finviz.com/quote.ashx?t=SOXL", "duration": 10, "tabReloadIntervalSeconds": 5 }, { "url": "https://elite.finviz.com/quote.ashx?t=NVDA", "duration": 10, "tabReloadIntervalSeconds": 5 },...
-
aws-openvpn
aws-openvpn 한국 서비스를 이용하고싶으신분은 꼭 리전을 한국으로 하시기 바랍니다. Create EC2 ec2 launch instance openvpn 으로 검색 market place 클릭 그림에 나온거 선택 > continue > t2.micro 선택. 원하는 vpc 선택 > 다음 > 다음 > create new security group > 기본값으로 다음 new keypair 생성후 다운로드 instance 이름을 openvpn으로 했다. elastic ip 하나 할당받아서 인스턴스에 attach해주면된다. 이름은 openvpn으로 햇다. ssh chmod 600 aws.pem ssh openvpnas@YourIP -i aws.pem # 로그인하자마자 설정을 해야한다. > yes #...
-
vscode-tip
vscode tip 언어별로 포멧터를 다르게 설정할수도 있다. ts/js formatter js나 ts의 경우에는 Prettier를 사용중이고 https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode 이곳에서 관련 내용을 확인할수 있다. c# formatter setting에서 확인해보기 바란다. 자세한 옵션은 여기서 볼수 있다. https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.formatting.csharpformattingoptions?view=roslyn-dotnet 잘되는지는 모르겟음. 기본 포멧터가 잘되는듯하여 구지 신경쓰지않음. 현재 setting { "editor.formatOnPaste": true, "editor.formatOnSave": true, "editor.defaultFormatter": null, "prettier.printWidth": 200, "prettier.singleQuote": true, "omnisharp.organizeImportsOnFormat": true, "omnisharp.enableEditorConfigSupport": true, //언어별로 설정이 가능 "[markdown]": {}, "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" // "editor.quickSuggestions": true }, "[json]": {...
-
eks
aws eks (kubernetes) 사용하기 eks는 아마존에서 관리해주는 쿠버네티스이다. 마스터를 다 관리를 해주므로 사용하기만 해서 많이 편하다. prerequisite aws어카운트는 미리 만들어 두셔야 따라하실수 있습니다. 가능하면 로그인 하는 유저의 secret키를 만들어 두시면 좋을거같습니다. 아래쪽 스탭을 참고해주세요 랩탑에 관련 프로그램 설치 kubectl https://kubernetes.io/docs/tasks/tools/ k9s https://k9scli.io/ https://k9scli.io/topics/install/ aws cli 설치 curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target / AWS 액세스 키 생성 setup command line aws configure 생성한 키와 내용을 넣는다. ~/.aws/에 파일이 생성된다. 내용 확인 cat...
-
aws rds public access
aws rds public access aws rds 서비스를 외부에서 엑세스가 가능하게 만들기 db instance가 외부 접속 가능하게 설정 aws console > rds > db instance > 원하는 db instance 선택후 modify connectivity > Additional connectivity configuration save vpc에서 라우팅을 internet gateway로 설정 aws console > rds > db instance > 원하는 db instance 선택후 > vpc 선택 click routing table edit routes 0.0.0.0/0 internet gateway 추가 security group 수정 aws console > rds > db instance...
-
aws eks
aws eks (kubernetes) aws cli 설치 curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target / AWS 액세스 키 생성 setup command line aws configure 생성한 키와 내용을 넣는다. ~/.aws/에 파일이 생성된다 확인 aws ec2 run-instances eksctl 설치 brew install aws-iam-authenticator brew tap weaveworks/tap brew install weaveworks/tap/eksctl kubernetes cluster 생성 eksctl create cluster \ --name cluster-1 \ --version 1.18 \ --region us-west-2 \ --nodegroup-name c1-nodes \ --node-type t3.medium \ --nodes 2 type t3.nano t3.micro t3.small...
-
kubernetes file upload
kubernetes 에서 file upload api를 만들고 난후 문제 dotnet core 로 file upload api를 애저에 쓰게 해서 만들었다. 로컬에서는 잘되었다. 그런데 kube에 올리니 잘되는것처럼 보엿으니 1메가 이상(정확하지는 않음)부터 에러(413)가 나기 시작했다. 처리 해보자. azure가 1메가 이상을 기본으로 안받아주는가.=> 로컬에서 azure로 바로 붙여서 하면 잘된다. 심지어 애저로 안하고 하드디스크에 저장하게 해서 테스트 로컬은 잘됨 서버에서는 에러 azure문제가 아님 dotnet core가 안받아주는가? kestrel이 잘 안해주는가? => 로컬에서는 잘됨 틀림 kestrel문제가 아닌거같은데. kubernetes ingress를 의심해서 에러 메세지(413)와 함게...
-
kubernetes delete namespace
kubernetes delete namespace kubectl delete ns AAA 이러면 관련 리소스가 다 지워진다. 그런데 가끔 행이 걸리는 경우가 있다. 다음처럼 하면 된다. on mac brew update brew install jq kubectl proxy & 터미널을 하다 더 띄워서 NAMESPACE=delete-namespace kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize kubectl proxy를 이용하는것이 핵심
-
ef-core migration
ef-core migration add migration add-migration <NAME> -c ApplicationDbContext -o ./Data/Migrations/UserDB dotnet ef migrations add <NAME> -c ApplicationDbContext -o ./Data/Migrations/UserDB migrations 폴더에 추가되고 snapshot이 변경된다. 현재 디비에는 적용이 안되는 상태이다. update database - add new migration update-database -c ApplicationDbContext dotnet ef database update -c ApplicationDbContext 디비에는 적용 Empty migrations add-migration <NAME> -c ApplicationDbContext -o ./Data/Migrations/UserDB dotnet ef migrations add <NAME> -c ApplicationDbContext -o ./Data/Migrations/UserDB 빈 마이그레이션을 생성한후 특별히 작업해야할 내용을 만들어준다. remove migration (Migration file 삭제)...
-
intellicode model management
intellicode model management 그동안 인텔리코드는 기본적으로 제공해주는 것만 사용가능한줄 알앗는데 오늘 내 프로젝트를 기반으로 모델링을 해서 사용할수 있다고 해서 한번 해보기로 함 아무리 찾아도 이 화면이 나오지를 않았다. search bar에서 intellicode를 치고 나오는 옵션에 들어가서 첫번재 나오는걸 선택 결과적으로 option » intellicode로 가는것이다. 거기서 옵션을 전부 enabled로 바꿔졌다. 그러자 상단에 intellicode 를 enable하겟냐는 메세지 나와서 오케 이제 vs를 재시작하고 프로젝트를 로딩후 다시 검색바에서 Intellicode model management를 선택하면 이화면이 나온다 거기서 train을 누르면 된다. 한번 써보고 좋은지...
-
angular deploy with docker (nginx)
angular deploy with docker (nginx) 문제점 : angular를 도커로 패키징을 해서 사용중인데 f5를 할때마다 404에러가 난다. 원인 : 쿠버네티스가 aaa.com/suburl 을 넘기는데 nginx가 디렉토리로 인식하고 404를 보낸다. 해결 방법 : 도커를 사용해서 deploy를 하려고 한다. # stage 1 FROM node:12 as builder # use changes to package.json to force Docker not to use the cache # when we change our application's nodejs dependencies: COPY package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p...
-
kubernetes mac에서 관리하기
kubernetes mac에서 관리하기 kubernetes cli 를 설치한다. brew install kubernetes-cli zsh 플러그인들 설치한다. cd ~/.oh-my-zsh/custom/plugins/ # zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions # zsh-syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git # plugin 활성화 vi ~/.zshrc ... plugins=(git zsh-syntax-highlighting zsh-autosuggestions kubectl kube-ps1) #여기에 추가한다. 터미널 재시작 kubernetes 연결하기 scp root@master01:/root/.kube/config ~/.kube/config # 확인 kubectl get pods dashboard 사용 설치 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml user 생성 https://github.com/kubernetes/dashboard/wiki/Creating-sample-user vi kube-admin-user.yaml --- apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1...
-
선배 사업가의 조언 - 01
선배 사업가의 조언 - 01 요즘 고민이 많아 선배 사업가분들을 만나서 이런 저런 이야기를 물어보고 정리하려고 하고 있다. 이번에 만난 분든 무역업을 통해 성공을 이루신 분이다. 간단히 정리해보자. 선배님의 조언 돈의 흐름을 바꾸는 생각을 하자. 물론 본인에게 그 흐름이 오게 스타벅스 기프트카드 (20-50usd)은 의외로 효과가 있다. 이걸 사서 그 고객에게 직접 전달하며 고객 대응도 하고 상황도 듣고 하라는 이야기 사업에 사는 ‘죽을 사’로 생각하고 죽을만큼 열심히 하고 있다고 염려는 염려를 낳는다. 개인사업자는 사장 본인이 브랜드이다....
-
Kubernetes 에서 Gluster사용하기
Kubernets에서 Gluster사용하기 - centos 7 중요 : namespace를 dev를 사용햇다. 각자 변경해서 사용하기 바란다. 기존에 추가해둔 gluster를 쿠버네티스에 Persistance Volume으로 사용해보려고 한다. 전체 쿠버네티스 클러스터에서 glusterfs가 동작해야한다. 설치한다. centos 7을 기준으로한다. yum install -y glusterfs-cli-6.1-1.el7.x86_64 yum install -y glusterfs-client-xlators-6.1-1.el7.x86_64 yum install -y glusterfs-6.1-1.el7.x86_64 yum install -y glusterfs-fuse-6.1-1.el7.x86_64 yum install -y glusterfs-libs-6.1-1.el7.x86_64 gluster 를 마운트해서 테스트해보자. mount -t glusterfs gluster12:gfs /glusterfs cd /glusterfs ls mkdir /glusterfs/kubernetes/mysql #아래에서 데이터를 넣을때 사용 check uid/gid ls -lnZ /mnt/glusterfs >...
-
OAuth 2 Client Credential Flow
OAuth 2 Client Credential Flow (Server to Server or Service Account) TL;DR client가 바로 user가 되면 된다. client에 userid를 포함해뒀다가토큰에 담아서 보내주면 됨 Oauth를 공부한지 한 2년이 되가는데 제일 이해가 안되는 부분이 이부분이 였다. 보통 server to server에 사용된다고 나와있기는 했다. 예를 들면 어떤 데몬을 만들어서 5분에 한번씩 api서버를 호출하는 console프로그램을 만든다고 해보자. 매뉴얼대로 해보면 인증은 되나 유저 정보가 없어서 클라이언트(프로그램)는 인증이 되나 내용을 가져올수가 없어서 이걸 왜 쓰는지도 모르고 넘어갔다. 인터넷에 몇번을 찾아봐도 (...
-
GlusterFS Add Node
GlusterFS Add Node Edit Hosts from gluster00 gluster05 gluster06 vi /etc/hosts 192.168.0.201 node201 gluster05 192.168.0.202 node202 gluster06 add harddisk on gluster05 and 06 fdisk -l lsblk fdisk /dev/sdb > d / enter pvcreate /dev/sdb vgcreate vg_1 /dev/sdb lvcreate -l +100%FREE -n data vg_1 mkfs -t xfs /dev/vg_1/data blkid /dev/vg_1/data > /dev/vg_1/data: UUID="76b6f3e1-a58c-4d62-924e-20f952d63fa7" TYPE="xfs" mkdir /data vi /etc/fstab > UUID=76b6f3e1-a58c-4d62-924e-20f952d63fa7 /data xfs defaults 0 0 mount -a Install Gluster yum install epel-release -y yum install centos-release-gluster...
-
GlusterFS Upgrade
glusterFS Upgrade 다음 문서를 참고한다. https://docs.gluster.org/en/latest/Upgrade-Guide/upgrade_to_4.1/ online 업그레이드와 offline 업그레이드 두 종류가 있으나 online upgrade를 사용할것이다. online upgrade Online upgrade is only possible with replicated and distributed replicate volumes. 우리는 distributed replicate volumes 이므로 진행해도 된다. 꼭 서버 한대씩 진행해야한다. replication을 꼭 다른서버에 하고 있는경우만 online upgrade가 가능하다. 다음 과정을 모든서버에 반복한다. Stop all gluster services, either using the command below, or through other means, killall glusterfs glusterfsd glusterd systemctl stop glustereventsd Stop all applications...
-
GlusterFS
glusterFS https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Clients/ GlusterFS라고 여러개의 서버를 이어서 하나의 서버(스토리지)처럼 보이는게 하는 것이다. server setup 192.168.0.196 gluster00 => Arbiter 192.168.0.197 gluster01 192.168.0.198 gluster02 전체 서버에 방화벽을 전부 끄고 시작하자. 전체 서버에 1기가 하드를 추가하고 Linux Volume Manager 을 사용하여 xfs로 설정 GlusterFS Trusterd storage pool Node Brick volume Volume Type Distributed Replicated Distributed-Replicated install vi /etc/hosts 192.168.0.196 node196 gluster00 192.168.0.197 node197 gluster01 192.168.0.198 node198 gluster02 yum install epel-release -y yum install centos-release-gluster -y yum install wget -y...
-
Linux Volume Manager
Linux Volume Manager 그동안 lvm을 의도적으로 안써왔는데 기술이 많이 안정화가 됬다고해서 의도적으로 사용해보려고 한다. 오늘 진행한것은 다음과 같다. centos 7 install 기본 프로그램들 다 설치 harddisk 추가 bios에서 하드디스크 auto로 되있는지 확인 부팅후 fdisk -l로 확인 기존 정보 지우기 lsblk fdisk /dev/sdb # delete all partition lsblk에서 dmraid 이런거 나오면 다음처럼 삭제 yum install mdadm dmraid ls /dev/mapper/ddf* dmsetup remove /dev/mapper/ddfs1_... physical volume (PV) 생성 파티션을 만들고 pv를 생성하는 매뉴얼이 잇는데 그냥 바로 하드에 생성해도...
-
유튜브 강의 녹화
강좌 녹화 방법 화면 크기 2560 x 1440 으로 하고 확대를 200%로 한다. 적으면 1920x1080으로 한다. obs 세팅 obs > setting > video 캔버스 해상도 : 1920x1080 출력 해상도 : 1920x1080 bicubic FPS : 60 필터 적용안함. 이렇게 하면 녹화가 필요한 화면만 된다.
-
angular 7 + web api (dotnet core 2.2) 개발환경구축
angular 7 + web api (dotnet core 2.2) 개발환경구축 패키지 매니저 설치 windows - chocolatey (https://chocolatey.org/install) @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" macos - brew (https://brew.sh) /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew update && brew upgrade brew tap caskroom/cask window user visual studio 2019 or 2017 (https://visualstudio.microsoft.com/) vscode choco install vscode -y dotnet core 2.2 sdk choco install dotnetcore-sdk -y git bash choco install git -y postman brew...
-
log 저장 서비스 - sentry.io
Sentry.io를 사용하여 로그를 원격지에 저장해보자. 로그를 원격지에 저장하여 이메일등으로 받아볼수 있는 서비스. 작업전에 sentry.io에 회원가입을 하고 이메일 확인을 한다. dotnet core 2.2 project 누겟 패키지를 설치하자. Install-Package Sentry.AspNetCore -Version 1.1.2 program.cs에서 다음처럼 수정하자. public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() // Add this: .UseSentry() .Build(); 반드시 스타트업 다음에 추가해야한다. 이제 appsettings.json 에 관련 내용을 추가하자. "Sentry": { "Dsn": "https://6425120cdbbf4e3491f9ba08f4323333@sentry.io/1406444", "IncludeRequestPayload": true, "SendDefaultPii": true, "MinimumBreadcrumbLevel": "Debug", "MinimumEventLevel": "Warning", "AttachStackTrace": true, "Debug": true, "DiagnosticsLevel": "Error" },...
-
angular dubug하기
앵귤러 디버그 하기 vs code로 프로젝트 열기 프로젝트 폴더를 visual studio code로 열자. plugin 설치 Debugger for Chrome 플러그인을 설치한다. https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome 디버그 에서 세팅을 하자. 옵션 버튼을 누르면 화면이 열리는데 다음처럼 세팅하자. { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "url": "http://localhost:4200", "webRoot": "${workspaceFolder}", "disableNetworkCache": true,...
-
angular 7 routing과 2개의 레이아웃 만들기
angular 7 routing and 2개의 레이아웃 만들기 현재 만들고 잇는 프로젝트가 로그인 전과 로그인 후가 레이아웃이 많이 다른다. 그래서 한번 만들어보았다. 화면이 두개가 다른경우가 있다. 일단 로그인 전 화면과 로그인 후 화면은 화면구성이 아주 다르다. 그러므로 first 라는 화면과 second라는 화면이 라우팅에 따라 바뀌어야한다. # layout Module을 만들자. MODULE_NAME=layout-sample # 꼭 lowercase 단어는 - 로 구분 ng generate module ${MODULE_NAME} --routing=true mkdir src/app/${MODULE_NAME}/components/ touch src/app/${MODULE_NAME}/components/.gitkeep mkdir -p src/app/${MODULE_NAME}/services touch src/app/${MODULE_NAME}/services/.gitkeep mkdir -p src/app/${MODULE_NAME}/models touch src/app/${MODULE_NAME}/models/.gitkeep...
-
vscode paste image
vs code 마크다운문서에 그림 붙여 넣기 코드는 구글 드라이브보다 그림 붙여넣는게 불편하다. 그런데 생각해보면 코드도 크롬이므로 될것도 같아서 찾아봄 https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image paste-image 라는 플러그인을 찾음 이제 이미지를 클립보드에서 바로 붙여넣을수 있게 됬다. 일단 플러그인 설치하고 그림을 붙여 넣어보자. 클립보드에 그림을 넣은뒤 ctrl+alt+v를 넣으면 이미지가 생기면서 문서도 링크가 추가된다. 설정을 변경하자. images아래 그림들 저장하자. 이제 자동으로 파일이 저장되면서 문서가 작성이 된다. 경로에 ./를 추가하자.
-
lets encrypt with wildcard cert
let’s encrypt with wildcard cert let’s encrypt 인증서에 와일드카드 도메인을 적용해보자. UR_DOMAIN=aaa.com sudo yum update sudo yum install epel-release git -y sudo yum install python-pip -y sudo yum install python-virtualenv -y sudo yum install certbot certbot certonly \ --manual \ --preferred-challenges=dns \ --email UR_EMAIL \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos \ --debug \ --no-bootstrap \ -d *.${UR_DOMAIN} # 이게 중요 _acme-challenge txt 도메인에 등록하라고 나옴 Please deploy a DNS TXT record under the name _acme-challenge.UR-DOMAIN with...
-
ingress nginx ssl
kubernetes ingress nginx with ssl (let’s encrypt) ingress nginx에 ssl을 추가해보자. 먼저 master에서 ssl을 만들어야한다. let’s encrypt를 이용하여 ssl을 만들자. let’s encrypt # domain 셋업 UR_DOMAIN=aaa.com UR-EMAIL=support@aaa.com sudo yum update sudo yum install epel-release git -y sudo yum install python-pip -y sudo yum install python-virtualenv -y sudo pip install requests urllib3 pyOpenSSL --force --upgrade sudo yum install certbot certbot certonly \ --manual \ --preferred-challenges=dns \ --email ${UR-EMAIL} \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos \ --debug \...
-
ansible tip
ansible tip git push when git status changed --- - hosts: dev gather_facts: no tasks: - name: git all --all shell: cd /data/tftpboot/ && git add --all - name: check git status shell: cd /data/tftpboot/ && git status register: result - debug: var=result - debug: var=result.stdout.find('working directory clean') - name: switch backup git push shell: cd /data/tftpboot/ && git commit -am "switch config changed" && git push when: result.stdout.find('working directory clean') != "-1" shell을 실행하여...
-
mssql backup
mssql backup 장애 해결하다 사이먼님이 알려주셔서 정리 https://ola.hallengren.com/ 위 사이트에서 코드를 다운받아서 디비에서 실행해두고 백업을 하면 된다. 사이트에 실행 샘플 코드가 있으니 그걸로 하면 되겠다.
-
Clean Architecture
Clean Architecture 다음 두 강좌면 대충 끝나는듯. uncle bob martin https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1113s http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html 정리 The Web is a Delivery Mechanism Database is Detail A good architecture allows major decisions to be deferred Clean Architecture with ASP.NET Core 2.1 https://www.youtube.com/watch?v=_lwCVE_XgqI&t=496s old version https://www.youtube.com/watch?v=fAJrVf8f6M4 정리 Domain Layer Entities Value Objects Enumerations (꼭 생성자에서 초기화를 하자) Logic Exceptions Application Layer Interfaces Models Logic Commands / Queries Validators Exceptions Persistence Layer DbContext Migrations Configurations Seeding Abstractions Infrastructure Layer Implementations, e.g....
-
devops list
devops 관련 리스트 하나씩 나눠져 있는것들을 흐름이 있게 정리해보았습니다. 구조 docker docker-01 https://teamsmiley.github.io/2018/06/27/docker-tip-01/ docker-02 - https://teamsmiley.github.io/2018/06/27/docker-tip-02/ docker private registry - https://teamsmiley.github.io/2018/12/22/docker-private-registry/ gitlab gitlab install - https://teamsmiley.github.io/2018/09/06/docker-gitlab/ gitlab build docker image - https://teamsmiley.github.io/2018/12/24/gitlab-ci/ kubernets kubernetes 기본 - https://teamsmiley.github.io/2018/12/19/kubernetes/ kubernetes ingress - https://teamsmiley.github.io/2019/01/27/kubernetes-ingress/ spinnaker spinnaker 설치전 준비 - https://teamsmiley.github.io/2019/01/28/minio/ spinnaker 설치 - https://teamsmiley.github.io/2019/01/29/kubernetes-spinnaker-install/ spinnaker 사용 - https://teamsmiley.github.io/2019/01/30/kubernetes-spinnaker-use/ spinnaker 사용시 에러 - https://teamsmiley.github.io/2019/01/31/kubernetes-registry/
-
kubernetes private registry(ImagePullError)
kubernetes 에서 private registry 사용 (ImagePullError) container image url 잘못된 경우 이미지를 가져올수 없다. 비밀번호를 설정해줘야할수 있다. 노드에 접속해서 docker-login을 하고 터미널에서 docker pull을 하면 이미지를 가져온다. 그런데 스피네커를 통해서 디플로이만 하면 ImagePullError 에러 발생 이런 경우는 private registry를 사용시 네임 스페이스마다 secret을 생성해줘야한다. kubectl create secret docker-registry <secret-name> \ --docker-server=<your-registry-server> \ --docker-username=<your-name> \ --docker-password=<your-pword> \ --docker-email=<your-email> \ --namespace=<namespace-name> 이렇게 하면 스피네커가 배포하고 나면 쿠베가 레지스트리에서 잘 가져온다. 쿠버네티스 yml은 다음처럼 imagepullsecret 추가되야함. apiVersion: apps/v1...
-
spinnaker 사용
Spinnaker 사용 blue green 배포 적용 https://www.spinnaker.io/guides/user/kubernetes-v2/traffic-management/#sample-bluegreen-pipeline 여기를 잘 참고하면 된다. 영어가 불편하신분을 위해 설명을 하면 application을 만들자. load balancer를 만들자. (service) pipeline을 추가한다. 아직 ingress가 스피네커를 통해서 생성이 안되는듯 보여 수동으로 생성했다. (방법 아시는분은 댓글좀..) 해보자. spinnaker ui에 접속하자. 앞 문서를 참고하여 http://spin.publishapi.com으로 접속 Add Application Add Service (load balancer) kind: Service apiVersion: v1 metadata: name: auth namespace: prod spec: selector: app: auth ports: - protocol: TCP port: 80 파이프 라인을 추가하자. add triger...
-
spinnaker 설치
Spinnaker 설치 Install Halyard Halyard manages the lifecycle of your Spinnaker deployment, including writing & validating your deployment’s configuration, deploying each of Spinnaker’s microservices, and updating the deployment. 로컬에 설치할수 있고 도커이미지를 사용할수 있다. 도커를 사용한다. mkdir ~/.hal mkdir /data/git/docker/halyard/kube vi /data/git/docker/halyard/docker-compose.yml --- version: "3.3" services: halyard: container_name: halyard restart: always image: gcr.io/spinnaker-marketplace/halyard:stable volumes: - ./kube:/home/spinnaker/.kube ports: - 8084:8084 - 9000:9000 cd /data/git/docker/halyard && docker-compose up -d docker exec -it halyard bash # 탭 완성...
-
kubernetes - minio
minio storage spinnaker 에서 필요한 데이터를 저장하는 저장소 역할을 합니다. mkdir -p /data/minio # minio file 저장 위치 mkdir -p /data/minio-config # minio 설정 저장위치 install cd wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod +x minio mv minio /usr/local/bin/minio minio server --address ":9001" --config-dir /data/minio-config /data/minio 설치 완료 시작프로그램에 등록하고 데몬으로 실행한다. cat <<EOT >> /etc/default/minio # Volume to be used for Minio server. MINIO_VOLUMES="/data/minio/" # Use if you want to run Minio on a custom port. MINIO_OPTS="--address :9001"...
-
kubernetes ingress nginx
ingress-nginx 하나의 아이피에 각각의 도메인마다 각자의 서비스로 보내주고 싶다. 구성은 다음 그림과 같다. 기본 pod and service 생성 vi hello-node.yml --- apiVersion: v1 kind: Pod metadata: name: hello-node labels: service-name: hello-node spec: containers: - name: hello-node image: asbubam/hello-node --- apiVersion: v1 kind: Service metadata: name: hello-node spec: ports: - port: 8080 targetPort: 8080 selector: service-name: hello-node kubectl create -f hello-node.yml 잘됬는지 체크 kubectl get pods kubectl get svc 현재까지 구성은 다음과 같다. ingress 설치 kubectl...
-
Docker를 사용하여 php를 운영해보자.
Docker를 사용하여 php를 운영해보자. nginx 기본 올리기 vi docker-compose.yml version: '3' services: web: image: nginx:latest ports: - "80:80" docker-compose up 웹브라우저로 localhost를 확인하자. nginx 설정 mkdir code vi site.conf server { index index.html; server_name AAA.com; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /code; } vi docker-compose.yml version: '3' services: web: image: nginx:latest ports: - "80:80" volumes: - ./code:/code - ./site.conf:/etc/nginx/conf.d/default.conf vi code/index.html hello 이제 다 되었다. docker-compose up 확인해보자. php-fpm을 추가해보자. php-fpm은 포트 9000번을 사용하여 대기한다. vi...
-
Gitlab CI를 사용하여 도커 이미지를 커밋마다 빌드해보자.
Gitlab CI를 사용하여 커밋할때마다 도커 이미지를 빌드해보자. centos 7 설치 도커 설치 gitlab-runner 커밋이 되면 도커 러너를 실행시키는데 이건 따로 설치후 gitlab 에 등록을 해주면 gitlab이 커밋시 명령어를 보내서 빌드를 해주는 프로그램인다. docker in docker를 사용할수도 있고 그냥 shell로도 빌드할수 있다. docker in docker는 빌드후 도커 이미지를 지워버리기 때문에 매번 빌드시마다 로컬 캐시를 사용하지 않고 서버에서 이미지를 받아온다. 오래 걸리고 별로 안좋은듯 싶다. docker in docker는 빌드에는 사용하지 말라는 이야기도 있다. 아무튼 나는 gitlab runner...
-
Docker Private Registry + SSL + Lets Encrypt + Username + Password
docker private registry centos 7 설치 도커 설치 폴더 생성 mkdir -p /data/docker/auth cd /data/docker lets encrypt ssl 발급받기 sudo bash sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo yum update sudo yum install epel-release git -y sudo yum install python-pip -y sudo yum install python-virtualenv -y sudo pip install requests urllib3 pyOpenSSL --force --upgrade cd /tmp git clone https://github.com/certbot/certbot.git cd certbot ./certbot-auto certonly \ --manual \ --preferred-challenges=dns \ --email...
-
KeepAlived
keepalived 서버 두대중 하나가 죽으면 다른 하나가 받아서 서비스를 한다. 기본 준비 centos 7으로 vm두개 설치했습니다. vagrant up vagrant plugin install vagrant-vbguest vagrant reload vagrant ssh 두개의 노드 모두다 sudo bash yum install -y keepalived systemctl enable keepalived 두개 노드 모두 mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.old vi /etc/keepalived/keepalived.conf 두 서버 같은 설정으로 넣는다. vrrp_instance VI_1 { state MASTER interface eth1 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.200 }...
-
kubernetes 기본
kubernetes와 spinnaker를 설치 사용 kubernetes 설치 1개의 마스터 서버 (centos 7) 2개의 노드 서버 (centos 7) 1개의 미니오 스토리지 서버,registry (centos 7) 아이피는 다음과 같습니다. IP Name 192.168.0.195 master 192.168.0.192 node192 192.168.0.193 node193 192.168.0.194 node194(minio storage, docker registry) 테스트랩 준비 centos7을 4대의 서버에 설치한다. kubernetes를 설치하기전 해야할 일이 있습니다. https://kubernetes.io/docs/setup/independent/install-kubeadm/#before-you-begin 문서를 참고하시면되는데요 진행해보겠습니다. 저는 root로 로그인하여 진행하였습니다. before you begin kubernetes # 기본 프로그램 설치 yum update && yum -y install kernel-headers kernel-devel yum install...
-
internal centos yum repo, dell repo , docker repo
내부네트워크에서 사용 하기 위해 repo를 mirror 한다. 서버 준비 도커로 nginx를 사용함 get-docker.sh mkdir -p /data/mirror/docker cd /data/mirror/docker curl -fsSL https://get.docker.com -o get-docker.sh yum repo mirror mkdir -p /data/mirror/docker cd /data/mirror/docker wget --mirror --convert-links --no-parent https://download.docker.com/linux/centos/7/x86_64/ mv download.docker.com/linux . wget --no-parent https://download.docker.com/linux/centos/docker-ce.repo wget --no-parent https://download.docker.com/linux/centos/gpg modify docker-ce.repo file cd /data/mirror/docker/linux/centos/7/ vi docker-ce.repo docker-ce.repo file contents cat docker-ce.repo [docker-ce-stable] name=Docker CE Stable - $basearch baseurl=http://yum/docker/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=http://yum/docker/linux/centos/7/gpg docker-compose mkdir -p /data/mirror/docker wget -p https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64 -O...
-
Ansible - 01
ansible - 01 ansible 에서 특정 노드만 빼기 OR (group1:group2) NOT !group2 wildcard web*.aaa.com regex (~web[0-9]+) ~: 처음 시작 AND (grout1:&group2) sample ansible-playbook --limit '!node01,!node02,!node03,!node04' kubernetes.yml ansible-playbook --limit 'all:!bad_host' playbook.yml ansible-playbook --limit 'all:!group1,!node100' kubernetes.yml ansible-playbook --limit 'hoost1:host2' yourPlaybook.yml ansible-playbook --limit 'webservers:&prod:!python3' yourPlaybook.yml setup module ansible node02 -m setup gathering fact 결과를 다 보여준다. ansible all -m setup --tree ./fact 전체 인벤토리를 대상으로 setup을 실행해서 디렉토리에 저장해준다.
-
Open API(NSwag) and Angular 6
dotnet core 2.1 에서 Open API(NSwag) 사용하기 install nuget package Package Manager : Install-Package NSwag.AspNetCore CLI : dotnet add package NSwag.AspNetCore NSwag.MSBuild도 나중에 필요할수도 있으니 미리 설치해둔다. wire up on startup 두곳에 추가해 준다. public void ConfigureServices(IServiceCollection services) { services.AddSwagger(); ... public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ... app.UseMvc(); //app.UseSwaggerReDocWithApiExplorer(settings => Redoc이라는 화면을 보여준다. https://github.com/Rebilly/ReDoc app.UseSwaggerUiWithApiExplorer(settings => { settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase; }); } API Controller 모든 controller에서 다음을 해준다. 리턴 가능한 모든 케이스에 대해...
-
devops - 01
Devops Study 01 devops 란 개발(Development)과 운영(Operations)의 합성어 목표 고객의 요구사항을 빠른시간에 서비스에 적용한다. devops tool chain Use Case - 사용자 요구사항 코드(프로그래밍) - 코드 개발 및 검토, 버전 관리 도구, 코드 병합. CI/CD (continuous integration and continuous delivery) 빌드 - 지속적 통합(CI) 도구, 빌드 상태. 테스트 - 테스트 및 결과가 성능을 결정. 배포 - 애플리케이션 디플로이 이전 단계.(CD) 구성 - 인프라스트럭처 구성 및 관리, IaC(Infrastructure as Code) 도구 모니터링/운영 - 애플리케이션 성능 모니터링, 최종...