반응형

Kubernetes service의 manifest를 작성하다보면, port와 targetport가 헷갈린다.

각 term이 의미하는 것을 지금 이해해도, 몇 개월 뒤에 다시 service resource에 대한 manifest를 작성하려고 보면 또 헷갈려서 다시 문서를 뒤적거리게 된다.

 

  • Port
    • Service Object 자체의 Port.  즉, 여러 Pod를 묶어서 이 Port 값으로 노출시킨다.
    • 한 kubernetes cluster 내에서 다른 pod가 내 pod에게 Layer 4 메시지를 전송할 때 바라보는 port number.
    • 만약 MetalLB, NGINX 같은 Ingress Gateway를 사용하는 경우라면, 이 'port' 값이 Cluster 외부에서 LB(즉, Ingress Gateway)를 통해 들어오는 Port number가 된다.
      예를 들어,   http://{EXTERNAL-IP}:{SERVICE-PORT}
      이런 형태가 된다.
  • TargetPort
    • 내 pod 안에 있는 container가 listening하고 있는 port number.
    • container(즉, app)이 어떤 port를 listening하고 있는지 정확한 값을 알고 설정해야 한다. (HTTPD 설정시 기본 값을 이용했다면, 대부분 80이지 않을까?)
  • NodePort
    • kubernetes 밖으로 노출시킬 port number.
    • Ingress Gateway 또는 Istio를 사용하는 경우에는 딱히 설정할 필요없는 설정 항목.

 

 

Example

만약 2개의 TCP Port를 Service로 오픈하고 싶다면, 아래와 같이 Service Resource와 Pod Resource를 설정한다.

 

##
## Service Manifest Example
##
kind: Service
metadata:
... 중간 생략 ...
spec:
  ports:
  - name: metrics
    port: 24231
    protocol: TCP
    targetPort: metrics
  - name: logfile-metrics
    port: 2112
    protocol: TCP
    targetPort: logfile-metrics
... 중간 생략 ...   
    


##
## Pod Manifest Example
##
kind: Pod
metadata:
... 중간 생략 ...
spec:
  containers:
    name: my-container  
    ports:
    - containerPort: 24231
      name: metrics
      protocol: TCP
    - containerPort: 2112
      name: logfile-metrics
      protocol: TCP
... 중간 생략 ...

'kubernetes' 카테고리의 다른 글

MetalLB BGP 모드를 이용한 Loadbalaning  (0) 2021.08.30
Istio Circuit Break  (0) 2021.08.07
Dockerfile Example  (0) 2021.07.19
Istio Web Docs - 읽기 좋은 순서대리 정리  (0) 2021.07.19
nsenter  (0) 2021.07.13
반응형

아래와 같은 형식으로 Dockerfile을 작성한다.

## syntax=docker/dockerfile:1


FROM ubuntu:18.04


## 이 Dockerfile 작성자
MAINTAINER sejong


## `apt install ...` 명령으로 패키지 설치시 사용자 입력을 요구하는 것을 방지
## 반드시 `apt install` 명령보다 앞에 DEBIAN_FRONTEND 환경 변수를 설정해야 한다.
ENV DEBIAN_FRONTEND=noninteractive


## 참고: 위 변수를 apt install 명령과 같이 방법도 있다. (아래 예시 참고)
##   `DEBIAN_FRONTEND=noninteractive apt install -y tzdata` 


RUN apt update

RUN apt install -y ca-certificates \
                   net-tools \
                   tzdata \
                   wget
                   
                   
## Timezone
ENV TZ Asia/Seoul


## Locale and Language
ENV LANG C.UTF-8
ENV LANGUAGE ko
ENV LC_ALL C.UTF-8


## 외부 Storage를 마운트하기 위한 정보
RUN mkdir  /mnt/my_volume
VOLUME     /mnt/my_volume


COPY  my-script.sh /usr/local/bin/my-script.sh
ENTRYPOINT ["my-script.sh"]


COPY . /app
RUN make /app
EXPOSE  8080
CMD python /app/app.py

 

Dockerfile을 작성한 후, docker image를 만들기 위해 아래와 같이 build 명령을 수행한다.

$ docker build -t myapp:v1 .

 

 

'kubernetes' 카테고리의 다른 글

Istio Circuit Break  (0) 2021.08.07
Port configurations for Kubernetes service  (0) 2021.07.20
Istio Web Docs - 읽기 좋은 순서대리 정리  (0) 2021.07.19
nsenter  (0) 2021.07.13
Kubernetes Port-Forward 설정  (2) 2021.07.10
반응형

Istio를 처음 접할 때, 어떤 순서로 Web docs를 읽어야 할지 몰라서, 우왕좌왕할 수 있다. 아래의 순서로 읽으면 Istio의 동작 원리를 이해하면서 연습도 같이 할 수 있어서 좋다.

 

Getting Started

 

Getting Started

Try Istio’s features quickly and easily.

istio.io

 

위 문서를 읽은 직후, 아래의 문서를 읽으면서 실습하는 것이 좋다.

Next steps

 

Getting Started

Try Istio’s features quickly and easily.

istio.io

 

 

Best Practices

 

Best Practices

Best practices for setting up and managing an Istio service mesh.

istio.io

 

'kubernetes' 카테고리의 다른 글

Port configurations for Kubernetes service  (0) 2021.07.20
Dockerfile Example  (0) 2021.07.19
nsenter  (0) 2021.07.13
Kubernetes Port-Forward 설정  (2) 2021.07.10
Kubernetes Ingress Gateway - Concept & Practice  (0) 2021.07.10
반응형

man 명령으로 man page를 읽으면, 위/아래 페이지 이동이나 검색하는 것이 불편하다.

차라리 text 파일을 열어서 검색하는 것이 앞/뒤 문맥을 확인하기 편하고, 전체 페이지 중에서 내가 어디쯤을 읽고 있는지 감을 잡기도 편하다.

그래서 이런 불편함을 해결하려고 man page를 text file로 dump하는 것을 만들었다.

 

##
## Filename:  .bash_profile  또는  .bashrc
##

mandump() {
    man $1 | col -bx > man_page_$1.txt
}

 

위와 같이 .bashrc 파일에 명령 'mandump'를 추가하고,  아래와 같이 실행한다.

$ mandump curl

$ vi man_page_curl.txt

curl(1)                           Curl Manual                          curl(1)
NAME
       curl - transfer a URL

SYNOPSIS
       curl [options / URLs]
       
DESCRIPTION
       curl  is  a tool to transfer data from or to a server, using one of the
       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,
       IMAPS,  LDAP,  LDAPS,  POP3,  POP3S,  RTMP, RTSP, SCP, SFTP, SMB, SMBS,
       SMTP, SMTPS, TELNET and TFTP). The command is designed to work  without
       user interaction.
 ...
 ...

 

 

 

 

반응형

나는 페이스북, 인스타그램 등 SNS를 안 하고, 어디 괜찮은 식당이나 카페를 갔다와도 리뷰를 작성하지 않는다.

(당장 회사 업무, 집안 일, 아이들 돌보는 일 등 시간이 없고, 심리적으로 귀찮아서~)

그런 귀차니즘과 시간의 쫓김을 떨치고, 오늘은 블로그에 끄적 거리는 이유가 "꽤 좋은 의사를 만나서"이다.

지금부터 썰을 풀자면~

어제 아내가 갑자기 어지럽다고 하면서 방바닥에 털썩 주저앉는 일이 있었다.

아내가 앉을 수 없을 정도로 어지럽다고 하여, 어지럼증을 치료하는 이비인후과를 찾아봤다.

그리하여 집에서 거리가 좀 멀지만, 안양성모이비인후과를 방문했다.

 

우선 병원 지하의 주차 공간이 넉넉하고, 넓어서 좋았다. 아파서 병원 왔는데 주차할 때부터 에너지가 소진되는 기분을 여기서는 느낄 수 없었다. 지하 주차장을 진입하자마자 비어있는 주차면이 많아서, 편하게 아무데나 주차했다.

병원이 있는 2층으로 올라가서 진료 접수하고, 진료 대기실 의자에 잠시 앉아 있었다.

아내의 어지럼증이 너무 심해서 대기실 의자에 앉는 것도 힘들 것 같은 생각이 들었다. 그래서 간호사에게 아직 진료 순서는 아니지만 검사실 침대에 가서 누워있어도 괜찮겠냐고 물었더니, 바로 검사실 침대로 안내를 해주었다.

바로 침대에 눕고, 20분 정도 기다리니 의사가 검사실로 들어왔다.

 

어지럼증의 원인이 무엇인지 확인하기 위해 검사 장비를 이용해서 이것저것 검사를 진행했고, 의사의 소견은 이석증이었다.

그리고

  • 왜 이런 증상이 생기는지,
  • 이와 유사한 증상의 병들이 몇 가지 더 있는데 왜 본인(의사)가 다른 병이 아니라고 판단했는지,
  • 앞으로 치료를 어떻게 할 것이고,
  • 일반적인 환자의 치료 경과가 어떻게 예상되는지 등... 

의사가 A부터 Z까지 상세하게 설명해줬다.

검사 결과와 관련 치료법에 관한 설명을 10분 넘게 들은듯.. ^^

그리고 보호자인 나만 따로 원장실로 불러서, 또 한번 치료 중에 조심해야 할 내용을 추가로 설명해주었다.

이렇게 진료와 검사를 마치고 집으로 가려고 하는데, 병원 현관 밖으로 나간 우리에게 또 의사가 따라나와서

이런 저런 강조할 부분을 또 설명해주었다. (앞서 10분 넘게 설명해준 것에 대한 요약 내용 정도... ^^)

40년 넘게 병원을 다니면서 이렇게 친절한 의사는 처음 본다. ^^

​이왕에 병원을 가야할 상황이 생긴다면, 나는 다음에도 이 병원을 또 가겠다.

절대로 병원 광고가 아니다. 나는 이 병원에 지인이 있거나 이 병원의 이득이 나의 삶과 아무런 관련이 없다.

진짜 이 병원 의사가 친절해서 이렇게 글을 쓰고 있는 것이다.

 

(시간이 없어서, 사진 올리기는 패쑤~)

반응형

 

1) Domain name 결정하기

가장 먼저 할 일은 "Domain의 이름을 무엇으로 할 것인가?" 정하는 것이다.

예를 들어, "hahahoho.com"과 같이 이름을 정한다.

 

2) Domain name 등록 업체 찾기

그 다음으로 할 일은 "어느 등록 업체에서 인터넷 도메인 네임을 등록할 것인가?"를 정하는 것이다.

가격이 중요한 요소가 아니라면, '후이즈(whois)', '예스닉(YesNIC)' 또는 '가비아(Gabia)' 같은 대중에게 잘 알려진 인터넷 도메인 등록 업체에서 등록하면 된다.

인터넷 도메인을 관리하는 웹 UI가 한글로 되어 있고, 뭔가 잘 모르겠다 싶을 때 고객센터에 전화하면 잘 응대해줘서 비싸더라도 이곳에서 도메인 네임을 등록하면 편하다.

그러나 돈이 넉넉하지 않다면, 'Domain.Com' 같은 해외 업체를 이용하는 것이 좋다.

 

(해외 업체에서 등록하면 외화가 낭비될 것이라고 생각할 수 있을텐데, 어짜피 후이즈 또는 가비아 같은 한국 업체도 도메인 네임을 등록할 때 Verisign 같은 Registry 기관에 외화를 송금해줘야 한다. 즉, 내가 직접 해외에서 카드 결제를 할 것이냐, 아니면 후이즈를 통해서 해외 송금을 할 것이냐 정도의 차이만 있을 뿐이다. 어떤 방법을 사용하던 간에~ 어짜피 외화가 지출된다. 서글픈 현실이다 ㅜㅜ)

 

싼 업체를 찾는다면, Domain.Com

나는 여러 업체를 알아보다가 Domain.Com이 그나마 저렴하고 서비스 신뢰성이 높아서 이 업체를 선택했다.

고객센터에 문의할 때 영어를 써야하는 불편함이 있을 수 있겠지만, 실제로 문의를 해보니...

고급진 영어를 구사하지 않아도 Domain.Com 고객센터에서 잘 응대하고 문제도 잘 해결해주었다.

나는 Domain Name 등록하는 웹 화면에서 유효하지 않은 Postal Code 때문에 카드 결제만 되고 실제로 Root name DB에 domain name이 등록되지 않는 에러가 발생했는데, Domain.Com 운영자가 나의 짧은 영어 표현에도 찰떡 같이 알아듣고 착착착 문제를 해결해줬다.

그리고 고객센터의 일처리가 빨라서 좋았다.

Domain.Com 아주 만족스런 도메인 등록 회사(Registrar)이다.

내년에도 이 Domain.Com에서 도메인 등록 기간을 연장할 생각이다.

 

 

싸면서 한국인이 고객 응대를 하는 업체를 찾는다면, YesNIC.COM

내가 등록한 도메인 네임 중에서 1개는 YesNIC.COM에서 등록했다.

다른 도메인 등록 관리 업체는 이것저것 부가 서비스(웹 호스팅, 클라우드 서비스 등)가 덕지덕지 붙고, UI가 현란하지만

YesNIC.COM은 Domain name만 전문적으로 관리하는 업체라서 Web UI가 심플하다.

나는 이점이 마음에 들어서 이곳에서 도메인 네임을 등록했다.

게다가 .KR 도메인이 싸다 ^^ 

예를 들어,  hahahoo.kr 같은 도메인을 등록할 것이라면 YesNIC을 추천한다.

 

 

도메인을 등록했으면, 그 다음으로 할 일이 네임서버 설치 ~~

 

 

Install BIND for name server(DNS) on Ubuntu 22.04

테스트한 날짜: 2023년 2월 6일 테스트 환경: Ubuntu 22.04 / Ubuntu 20.04 / Ubuntu 18.04 (이 3개 버전 모두 잘 동작했다) BIND 설치에 관해 참고하면 좋은 문서: https://www.hiroom2.com/2018/05/06/ubuntu-1804-bind-en/ BIND(DNS

andrewpage.tistory.com

 

반응형

Shell script를 작성하다보면, Random 숫자가 필요한 경우가 있다.

아래 예제 스크립트처럼 $RANDOM 변수를 사용하면, 매번 새로운 random integer를 구할 수 있다.

 

 

간단한 Example Script

#!/usr/local/bin/bash

for i in `seq 3`
do
    myrand=$RANDOM
    echo "Original random number: $myrand"

    mynum=$(expr $myrand / 1000)
    echo "Devided number: $mynum"
done

 

 

Random 초 만큼 쉬면서 CURL 명령을 반복 수행하는 Example Script

아래 예제는 실제로 ISTIO의 BookInfo 예제를 돌릴 때, 내가 종종 이용하는 Script이다.

 

#!/bin/bash

test_url="http://node-40.hub.cncf/productpage"

for i in $(seq 1 99999)
do
    curl -s -o /dev/null $test_url -: \
         -s -o /dev/null http://grafana.hub.cncf/?orgId=1 -:   \
         -s -o /dev/null http://tracing.hub.cncf/jaeger/search

    myrand=$RANDOM
    mysleeptime=$(expr $myrand % 7)
    printf "Run count: %d    (Sleep: %d seconds)\r" $i $mysleeptime
    sleep $mysleeptime
done
반응형
#!/usr/local/bin/bash

for i in $(seq 1 99)
do
    printf "Run count: %d \r" $i
    ## To do something at this line.
    sleep 0.5
done

Shell script로 for loop을 돌리면서, 'echo' 또는 'printf' 명령을 사용할 때 화면 아래로 text가 쭉 출력된다.

단순하게 count 값이 증가되는 것을 출력하는 것이라면, 아래로 쭉 내려가는 것보다는 같은 자리에서 counter 숫자만 갱신되는 것이 훨씬 예쁘다.

방법은 간단하다. C언어에서 사용한 것처럼 Carriage Return을 사용하면, 같은 자리에서 증분되는 counter만 출력할 수 있다.

 

아래 예제처럼 작성하고 돌려보시라 :D

 

 

 

+ Recent posts