반응형
참고하면 좋은 Web Docs:

https://www.lesstif.com/software-architect/openssl-command-tip-7635159.html#OpenSSL%EC%9E%90%EC%A3%BC%EC%93%B0%EB%8A%94%EB%AA%85%EB%A0%B9%EC%96%B4(command)%EB%B0%8F%EC%82%AC%EC%9A%A9%EB%B2%95,tip%EC%A0%95%EB%A6%AC-%EC%9D%B8%EC%A6%9D%EC%84%9C%EC%A0%95%EB%B3%B4%EB%B3%B4%EA%B8%B0

 

 

 

openssl command cheat sheet

## Certificate Expiry 확인
$  openssl x509 -in my.crt -noout -enddate | cut -c10-40

## File 내용 확인
$ openssl rsa  -noout -text -in myprivate.key    # private key file
$ openssl req  -noout -text -in myreq.csr        # singing request file
$ openssl x509 -noout -text -in mycert.crt       # certificate file

## cerficate과 private key가 쌍이 맞는지 확인
$ openssl rsa  -in myprivate.key -modulus -noout | openssl md5
$ openssl x509 -in mycert.crt    -modulus -noout | openssl md5
$ openssl req  -in myreq.csr     -modulus -noout | openssl md5

Private Key를 생성하고,  Signing 요청하는 것은 아래 내용을 참고할 것!

 

Certficate 파일과 Private Key 파일의 Format 변환(DER/PEM)은 아래 내용을 참고할 것!

 

'Ubuntu' 카테고리의 다른 글

Root 계정의 SSH 로그인 허용  (0) 2021.12.28
Install BIND for name server(DNS) on Ubuntu 22.04  (0) 2021.11.05
.bashrc 또는 .bash_profile 설정  (0) 2021.07.22
.vimrc 작성  (0) 2021.07.22
iptables and netfilter  (1) 2021.07.10
반응형

 

작성일: 2024년 3월 1일

 

Pod 생성 방법 - A

급하게 Pod만 생성해서 Kubernetes 기능을 확인해야 할 경우가 있다.

이럴 때, 아래와 같이 명령 한번 실행해서 Pod를 deploy할 수 있다.

$ kubectl  create  deployment  nginx  --image=nginx

 

또는 아래와 같이  YAML 형식으로 Pod 배포가 가능하다.

 

Pod 생성 방법 - B

$  kubectl  create  namespace  andrew
$  kubectl  apply  -n andrew  -f -  <<EOF

apiVersion: v1
kind: Pod
metadata:
  name: almighty
  labels:
    app: almighty
spec:
  terminationGracePeriodSeconds: 3
  containers:
  - name: almighty
    image: docker.io/andrewloyolajeong/almighty:0.2.4
    
EOF

 

 

[ 참고 ]
docker.io/andrewloyolajeong/almighty 컨테이너 이미지 내부 동작에 대한 설명
    - NGINX 서버 구동 (TCP 80 포트를 Listening)
    - SSHD 서버 구동 (TCP 22 포트를 Listening)
    - Golang으로 구현한 Simple HTTP Server 구동 (TCP 8080 포트를 Listeing)
    - Golang으로 구현한 UDP 서버 구동 (UDP 9090, 9091, 9092 포트를 사용)

 

 

그런 후에 아래와 같이 Service Resource도 만들 수 있다.

 

Service 리소스 생성 방법

$  kubectl  apply  -n andrew  -f -  <<EOF

apiVersion: v1
kind: Service
metadata:
  name: almighty
  annotations:
    ## 아래 nlb 타입은 UDP 패킷을 LB 처리하기 위한 설정이다.
    ## 만약, UDP 패킷을 처리할 일이 없다면, "nlb" 타입을 지정하지 않아도 된다.
    oci.oraclecloud.com/load-balancer-type: "nlb"  ## Oracle Cloud를 사용하는 경우 설정
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local     ## Public Cloud를 사용하는 경우 설정
  selector:
    app: almighty
  ports:
    - name: myweb
      protocol: TCP
      port: 8080
      targetPort: 8080
    - name: yourweb
      protocol: TCP
      port: 1080
      targetPort: 80
    - name: myudp
      protocol: UDP
      port: 9090
      targetPort: 9090
  
EOF

 

PV 생성

진짜 간단하게 PV, PVC 생성에 관해서 작성하려고 했는데 Private Cloud 환경과 Public Cloud 환경에 따라 생성 방법이 다르고,

Public Cloud Infra를 제공하는 회사마다 Manifest 작성 방법이 다 달라서 이 부분은 아래와 같이 해당 Public Cloud Infra의 Web Docs 주소를 남기는 것으로 마무리하겠다.

가장 많이 사용되는 CSI[Cluster Storage Interface] 몇 가지 사례만 사용법을 익히면 될듯하다.

 

Oracle Cloud Infra를 사용한다면, 아래 Web Docs를 읽고 예제를 따라하면 잘 동작한다.

https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengcreatingpersistentvolumeclaim.htm

 

Creating a Persistent Volume Claim (PVC)

When a PVC is created using the CSI volume plugin (provisioner: blockvolume.csi.oraclecloud.com), you can expand the volume size online. By doing so, you make it possible to initially deploy applications with a certain amount of storage, and then subsequen

docs.oracle.com

 

 

 

 

반응형

Kubernetes나 Docker를 이용해서 이것저것 사용하다보면, 나중에는 사용하지 않고 남아 있는 쓰레기 image들이 있다.

이것들을 한방에 지우는 스크립트를 작성했다.

 

아래 Script는 ":5000" 문자열을 포함하는 container image만 찾아서 지운다.

#!/usr/bin/bash

REMOVE_ITEM_LIST=$(docker image ls | grep ":5000" | awk '{ printf "%s:%s\n", $1, $2 }')

for REMOVE_ITEM in $REMOVE_ITEM_LIST
do
  echo "TO Remove:  $REMOVE_ITEM"
  docker image rm $REMOVE_ITEM
done

 

반응형

Macbook M1을 구입하고, 대체로 만족하면서 사용하고 있었는데

막상 go source code를 작성하고 compile하려고 생각해보니, 실제로 실행 파일(executable file)을 돌릴 대상 장비가 x86 cpu를 사용하는 경우가 대부분이라서 cross compile 필요성을 느꼈다.

아직 한번도 go cross compile을 하지 않았던터라, 이번 기회에 짧게 메모를 해본다.

 

cross compile 지원되는 OS와 CPU architecture 확인

$ go tool dist list
aix/ppc64
android/386
... 중간 생략 ...
darwin/amd64    <-- Intel Mac을 사용하는 경우
darwin/arm64    <-- M1 Mac을 사용하는 경우
...
linux/386
linux/amd64     <-- Intel Linux를 사용하는 경우 (아마 대부분 이 경우가 아닐까?)
linux/arm
linux/arm64
... 중간 생략 ...
windows/386
windows/amd64
windows/arm
windows/arm64
$

 

go cross compile

Case: Linux OS & Intel CPU

M1 Macbook에서 Linux OS에서 돌릴 executable file을 build하는 방법이다.

GOOS=linux  GOARCH=amd64 환경 변수만 설정하고, go build 명령을 수행하면 Linux OS에서 돌아가는 실행 파일이 만들어진다.

$ go mod init  andrew.space/myapp
$ go mod tidy
$ GOOS=linux GOARCH=amd64  go build 
$ ls
myapp
$

 

Case: Linux OS & ARM CPU

Intel Macbook에서 M1 Macbook에서 돌릴 executable file을 build하는 방법이다.

GOOS=darwin  GOARCH=arm64 환경 변수만 설정하고, go build 명령을 수행하면 M1 Mac OS에서 돌아가는 실행 파일이 만들어진다.

(여담이지만, 이미 M1 Mac OS는 OS 자체적으로 Intel->ARM 구조로 변환해주는 기능이 있어서 굳이 이렇게까지 열심히 Cross compile을 하지 않아도 된다)

$ go mod init  andrew.space/myapp
$ go mod tidy
$ GOOS=darwin GOARCH=arm64  go build 
$ ls
myapp
$

 

Case:  다양의 OS와 CPU에 대한 일괄적으로 Cross Compile하기

매번 대상 OS와 CPU에 맞춰서 Cross Compile하기 귀찮다면, 아래와 같이 모든 OS, CPU에 대해서 Cross compile하도록  script를 만든다.

#!/usr/local/bin/bash

archs=(amd64 arm64 ppc64)

for arch in ${archs[@]}
do
        env GOOS=linux GOARCH=${arch} go build -o myapp_${arch}
done

 

 

Tip:  .bashrc 파일에 GO 환경 변수 설정

위에서 설명한 $GOOS, $GOARCH 환경 변수를 매번 타이핑하기 싫다면

아래처럼 .bashrc 파일에 한번만 기록해놓자!!!

 

$  cat ~/.bashrc

... 중간 생략 ...

##
## For GoLang
##
export GOPATH=$(go env GOPATH)
export GO111MODULE=on
export GOOS=linux
export GOARCH=amd64

... 중간 생략 ...

$
반응형

grep command를 -v(또는 --invert-match) 옵션과 함께 사용할 때, 여러 개의 조건을 입력하고 싶을 때가 있다.

-v 옵션을 여러 조건과 사용할 때 항상 표현식이 헷갈렸는데, 그래서 메모를 해본다.

$ grep -vE 'aaa|bbb'
ccc
ddd
eee
$

 

반응형

맥북 또는 맥미니를 모니터에 연결해서 사용하다보면, 색감이나 선명도가 많이 떨어진다는 것을 느낀다.

특히 맥북의 화면과 모니터를 번갈아가면서 볼 때는 화질 차이가 더 심하게 느껴진다.

대부분 이런 불만이 있을 때, Retina 모니터를 구입하라고 솔루션을 제시하면서 LG전자의 80만원대 모니터를 추천하는데 나한테는 너무 비싼 모니터이다.

그래서 LG전자의 80만원대 모니터가 좋은 솔루션인줄 알았지만 몇년간 참으면서 살았다. 

 

그런데 최근 국내 중소기업 2곳이 30만원짜리 UHD 모니터를 출시하면서 나도 Mac 화면을 선명하게 볼 수 있게 되었다.

내가 맥북 프로와 모니터를 연결한 구성은 아래와 같다.

 

  • 맥북 프로 2015년 Mid (AMD Radeon R9 M370X 2GB GDDR5) 모델의 썬더볼트 포트(즉, mini-DP 포트)와
  • 크로스오버 2890CU 모니터의 DP 포트를 연결했다.
  • 그리고 케이블은 "이지넷 Mini Display to DP v1.4 NEXTLINK-MDPC5" 라는 케이블을 사용했다. (아래 사진을 참고)
    아래 사진에서 왼쪽 DP 포트를 크로스오버 2890CU 모니터의 DP 포트에 연결하고, 
    오른쪽 mini-DP 포트를 맥북 프로(Macbook Pro)의 썬더볼트 포트에 연결했다.

 

 

 

이렇게 구성한 결과는?

 

대만족이다. 모니터와 케이블 구입에 32만원을 사용했는데 만족감은 100만원 정도 지출했을 때의 만족감이다.

진작 이렇게 구성해서 사용할껄하는 후회감이 마구마구 밀려온다.

 

 

 

돈이 부족하다면, 이렇게 구성하는 대안도 있다.

 

내가 QHD 모니터도 한대 가지고 있어서, QHD 모니터를 위 UHD 모니터와 동일한 방식(mini-DP to DP)으로 연결해봤는데, HDMI로 모니터를 연결했을 때보다 훨씬 선명도가 높다.

즉, 연결방식을 HDMI에서 DP로만 바꾸어도 MacOS는 화질 개선이 많이 된다.

 

MacOS를 사용하면서 모니터 화질에 불만이 많은 분은 HDMI 대신 mini-DP to DP 연결을 시도해보시라 ^^

반응형

2022년 7월 현재, 아래 Red Hat 문서가 MetalLB BGP Mode에 관한 문서 중에서는 제일 설명이 잘 되어 있는 것 같다.

 

OCP(Openshift Container Platform)에서 BGP Mode의 MetalLB를 사용할 것이라면 아래 Red Hat Docs를 참고.

다루는 내용은 이렇다.

  • MetalLB, BGP, BFD에 관한 설명
  • BGP Mode의 MetalLB를 사용하기 위한 사전 요구 사항
  • 테스트 예시 환경 (그림 포함)
  • 테스트 해보기.
 

How to Use MetalLB in BGP Mode

The purpose of this article is to introduce MetalLB design and goals and cover in more detail this new mode.

content.cloud.redhat.com

 

 

 

 

위 Red Hat 문서를 찬찬히 읽어서 이해를 다 했다면, 굳이 아래 문서는 안 봐도 된다.

위 문서가 웬만한 것을 다 Cover하기도 하고, FRR(FR Routing) 같은 Router Emulator를 이용해서 실질적으로 실습환경도 잘 설명하고 있어서 위 문서 1개로 스터디를 끝낼 수 있다.

 

 

도움이 될만한 Web Docs

MetalLB에서 BGP 모드를 사용하는 개념과 Network 구성에 관한 Web Docs이다.

그림과 예제를 이해하기 잘 작성했다.

 

 

 

MetalLB BGP 모드를 이용한 Loadbalaning

기본적인 구성은 아래와 같이 worker3대가 10.10.2.0/24의 인터페이스가 연결되어 있으며, 같은 네트워크에 BGP를 사용할 L3SW가 연결 되어 있다. 그리고 Client 는 172.16.100.0 대역대로 L3SW와 연결 되어 있

cyuu.tistory.com

 

'kubernetes' 카테고리의 다른 글

간단하게 Pod, Service, PV 리소스 생성하기  (0) 2021.11.03
Docker image 목록 한방에 지우기  (0) 2021.11.03
Istio Circuit Break  (0) 2021.08.07
Port configurations for Kubernetes service  (0) 2021.07.20
Dockerfile Example  (0) 2021.07.19
반응형

 

Windows 10 Home/ProFPP(Full Package Product), ESD(Electronic Software Distribution) 형태로 구입한 경우에는 이미 설치한 Windows 10을 삭제하고, 다른 PC에 Windows 10을 설치하고 Windows 10 License도 옮길 수 있다. (즉, 다른 PC에서 정품 인증이 된다)

그러나 Windows 10이 설치되었던 기존 PC에서 Windows 10을 삭제하기 전에 정품 인증을 해제해야 한다.

이렇게 먼저 정품 인증을 해제하지 않고, Windows 10만 삭제하면 Microsoft 고객센터에 전화해서 정품 인증 절차를 받아야 하는데 실제로 전화해서 정품 인증 절차를 받아보면서 느낀 점은 "아~ 지친다!!!" 이다.

고객센터와 정말 통화를 길게해야 한다.

게다가 이 고객센터가 필리핀 같은 곳에 있는지 통화 품질이 엄청 안 좋고, 소리도 작다.

그래서 통화를 15분 정도 하면서 스트레스를 꽤 많이 받았다.

전화상으로 수십 자리의 알파벳 코드를 불러 주는 것을 듣고 PC에 입력해야 하는데, 이거 상당히 어렵다. ㅠㅠ

(전화를 해보면 알겠지만, 고객센터가 달나라에 있는 것처럼 음질이 너무 안 좋다)

 

 


 

아래 블로그에 윈도우즈 라이센스를 해제하는 방법이 잘 설명되어 있다. 

그리고 Windows 10을 삭제하기 전에 현재의 Product Key를 확인하고, 삭제해야 한다.

 

 

 

윈도우 제품키(시디키) 확인하기

내 PC의 윈도우 제품 키(시디 키)를 확인하는 방법에 대해 알아 보자. MS 윈도우 제품 키(시디 키)는 2...

blog.naver.com

 

 


위 웹 문서에 여러 방법의 설명이 있지만, KeyFinder 라는 프로그램을 다운로드 받아서 실행하면 Product Key를 열람할 수 있다.
다른 방법은 잘 안 되서 비추~

 

 


 

 

 

 

윈도우10 정품 인증하기 및 해제하기

윈도우10 정품 인증하기 및 해제하기에 대해 알아 보자. 윈도우10 디지탈 라이센스를 사용하여 정품 인증하...

blog.naver.com

 

 

 

주의

만약, MS 계정으로 등록된 PC라면, 아래와 같이 추가로 MS 홈피에 접속해서 계정에 등록된 PC를 지워야 한다.

꼭!!! 지워야 한다.

 

작업 순서는 아래와 같다.

 

  1. https://microsoft.com 에 로그인한다.
  2. Web 화면의 우측 상단에 있는 사람 icon을 click한다.
  3. "내 Microsoft 계정"을 click한다.
  4. "장치" Section의 "모든 장치 보기"를 click한다.
  5. 웹 페이지에 보여진 Windows가 설치된 PC 정보를 확인하고 해당 PC를 삭제한다.
    --------------------------------------------------------------------------------------------------
    여기 까지는 microsoft.com 웹 페이지에서 하는 작업이고, 아래부터는 실제 PC에서 터미널을 열고 작업해야 한다
    --------------------------------------------------------------------------------------------------
  6. 실제 컴퓨터에서 Windows를 초기화(또는 삭제)한다.
    Windows 제품키를 지우고, 초기화하는 것은 자세한 내용은 아래 웹 페이지를 따라 한다.

 

 

 

윈도우10 정품인증 해제하는 방법입니다. - 아이티온즈넷

윈도우10 정품인증을 해제는 slmgr /cpky 및 slmgr /upk 명령어를 이용하며 MS계정 디지털라이선스 사용자는 마이크로소프트 홈페이지에서 PC 제거를 합니다.

itons.net

 

+ Recent posts