안녕하세요. 

Playce Cloud Team의 변진영입니다.

오늘은 CentOS 7.8 환경에서 Playce Kube 2.0을 이용해 클러스터를 설치해보고 

Master와 Worker를 구성해보는 실습을 진행해보겠습니다.

(해당 실습은 Openstack에서 생성해둔 인스턴스, 볼륨 등의 리소스를 이용하여 진행됐습니다.)

들어가기에 앞서…

Playce Kube란?

Playce Kube는 쿠버네티스 오픈소스를 기반으로, 애플리케이션을 쉽게 배포하고

자동화된 운영관리를 제공하는 PaaS(Platform as a Service) 솔루션입니다.

아키텍처

프로세스의 흐름

사전요구사항

  • Playce Kube에서 지원하는 플랫폼
    • Openstack
    • AWS
    • GCP
    • Azure
    • Baremetal
  • Playce Kube에서 지원하는 운영 체제(OS)
    • CentOS 7.x
    • Rocky Linux 8.x
    • Ubuntu focal(20.xx)
    • Ubuntu jammy(22.xx)
  • Security Group 정보

방화벽 포트는 사전에 허용되어 있어야 합니다.

프로토콜 방향 포트 범위 설명 사용 주체
TCP 인바운드 22 SSH 접속용 포트  
TCP 인바운드 8443 대시보드 HTTPS (현재 rancher) Web Client
TCP 인바운드 9443 Deploy Keycloak 대시보드
TCP 인바운드 5000 Docker Registry (HTTPS) 모든 Kubernetes 클러스터 노드들
TCP 인바운드 80 Repository HTTP (OS Repository, Kubernetes Repository, Helm Chart Repository, Jenkins Plugin Download) 모든 Kubernetes 클러스터 노드들
TCP 인바운드 443 Repository HTTPS (OS Repository, Kubernetes Repository, Helm Chart Repository, Jenkins Plugin Download) 모든 Kubernetes 클러스터 노드들
UDP 인바운드 123 Network Time Protocol (chrony) 모든 Kubernetes 클러스터 노드들
TCP/UDP 인바운드 53 Domain Name System (bind9) 모든 Kubernetes 클러스터 노드들
TCP 인바운드 2049 Network File System 모든 Kubernetes 클러스터 노드들
Deploy Security Group

프로토콜 방향 포트 범위 용도 사용 주체
TCP 인바운드 22 SSH 접속용 포트  
TCP 인바운드 80 Ingress HTTP 포트 Web Client
TCP 인바운드 443 Ingress HTTPS 포트 Web Client
TCP 인바운드 6443 쿠버네티스 API 서버 Kubernetes 마스터 노드
TCP 인바운드 2379-2380 etcd 서버 클라이언트 API Kubernetes 마스터 노드. kube-apiserver, etcd
TCP 인바운드 10250 Kubelet API 모든 Kubernetes 클러스터 노드들. Self, 마스터 노드
TCP 인바운드 10259 kube-scheduler Kubernetes 마스터 노드. Self
TCP 인바운드 10257 kube-controller-manager Kubernetes 마스터 노드. Self
TCP 인바운드 30000-32767 NodePort 서비스 모든 Kubernetes 클러스터 노드들
TCP/UDP 인바운드 53 Domain Name System (bind9) 모든 Kubernetes 클러스터 노드들. nodelocadns 를 사용할 경우 Self 만 사용
TCP 인바운드 179 Calico networking (BGP) 모든 Kubernetes 클러스터 노드들
Master & Worker Security Group

– 네트워크 토폴로지

 

서버OSCPUMemoryHDDNetwork
BastionRocky linux 8.58 Core16 GB200GB/800GBex-net && restrict-net 10.252.1.23
DeployCentOS 7.88 Core16 GB50GB/800GBrestrict-net
10.252.0.29
MasterCentOS 7.88 Core16 GB50GBrestrict-net
10.252.1.125
WorkerCentOS 7.88 Core16 GB50GB
restrict-net

10.252.3.11
Playce Kube의 지원 OS 권장 사양에 따라 실습을 진행해주세요.

디스크 파티셔닝 및 마운트

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   50G  0 disk
└─vda1 253:1    0   50G  0 part /
vdb    253:16   0  800G  0 disk 
=> 추가된 디스크를 확인할 수 있습니다.

# 추가된 디스크를 파티셔닝해줍니다. 
# fdisk /dev/vdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-1677721599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1677721599, default 1677721599):
Using default value 1677721599
Partition 1 of type Linux and of size 800 GiB is set
Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048  1677721599   838859776   83  Linux
Command (m for help): w
The partition table has been altered!

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   50G  0 disk
└─vda1 253:1    0   50G  0 part /
vdb    253:16   0  800G  0 disk
└─vdb1 253:17   0  800G  0 part
=> 디스크가 파티셔닝된 것을 확인할 수 있습니다.

# 파티셔닝된 디스크를 ext4 형식의 파일시스템으로 포맷합니다.
# mkfs.ext4 /dev/vdb1
...
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# 필요한 파일들을 위치 시킬 디렉토리를 미리 생성합니다.
# mkdir -p /playcecloud

# 생성한 디렉토리에 디스크를 마운트합니다.
# mount /dev/vdb1 /playcecloud/
# df -Th | grep playcecloud
/dev/vdb1      ext4      788G  2.4G  745G   1% /playcecloud


파일 및 체크섬 다운로드

# 현재 Bastion만 인터넷에 연결되어있기 때문에 
Bastion에서 필요한 파일을 다운로드 후 Deploy로 옮겨주는 작업을 진행할 예정입니다.
# 설치 파일을 다운로드합니다.
# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar

# 체크섬 파일은 체크섬 확인을 수행할 파일만 다운로드 받으면 됩니다. (MD5, SHA256 택 1)
# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar.MD5SUMS
# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar.SHA256SUMS

# 데이터 파일과 체크섬 파일들을 다운로드합니다.
# 데이터 파일 목록
- PlayceCloudData.DeployBase.v2.0.tar
- PlayceCloudData.K8SRegistry.v2.0.tar 
- PlayceCloudData.K8SRepo.v2.0.tar
- PlayceCloudData.OSRepo.centos7.v2.0.tar

# 체크섬 파일 목록
PlayceCloudData.K8SRepo.v2.0.tar.MD5SUMS
PlayceCloudData.K8SRepo.v2.0.tar.SHA256SUMS
PlayceCloudData.DeployBase.v2.0.tar.MD5SUMS   
PlayceCloudData.DeployBase.v2.0.tar.SHA256SUMS
PlayceCloud.Kube.v2.0.tar.MD5SUMS
PlayceCloud.Kube.v2.0.tar.SHA256SUMS
PlayceCloudData.OSRepo.centos7.v2.0.tar.MD5SUMS
PlayceCloudData.OSRepo.centos7.v2.0.tar.SHA256SUMS

MD5와 SHA-256

# MD5 (Message-Digest algorithm 5)
MD5는 메세지 축약 알고리즘으로써, 파일 무결성 검사용으로 많이 쓰이고 있습니다.
128bit의 해쉬를 제공하며, 암호화와 복호화를 통하여 보안 용도로도 많이 쓰입니다.

# SHA-256

SHA-256은 SHA(Secure Hash Algorithm)의 한 종류로서 256비트의 해시 값을 생성하는 해시 함수입니다.

# 다운로드된 파일들을 확인하고 체크섬 검사를 진행합니다. 
# ls
PlayceCloudData.DeployBase.v2.0.tar              PlayceCloudData.K8SRepo.v2.0.tar.SHA256SUMS
PlayceCloudData.DeployBase.v2.0.tar.MD5SUMS      PlayceCloudData.OSRepo.centos7.v2.0.tar
PlayceCloudData.DeployBase.v2.0.tar.SHA256SUMS   PlayceCloudData.OSRepo.centos7.v2.0.tar.MD5SUMS
PlayceCloudData.K8SRegistry.v2.0.tar             PlayceCloudData.OSRepo.centos7.v2.0.tar.SHA256SUMS
PlayceCloudData.K8SRegistry.v2.0.tar.MD5SUMS     
PlayceCloudData.K8SRegistry.v2.0.tar.SHA256SUMS  PlayceCloud.Kube.v2.0.tar
PlayceCloudData.K8SRepo.v2.0.tar                 PlayceCloud.Kube.v2.0.tar.MD5SUMS
PlayceCloudData.K8SRepo.v2.0.tar.MD5SUMS         PlayceCloud.Kube.v2.0.tar.SHA256SUMS

# 체크섬 검사는 정합성 확인을 위함이며 상황에 따라 생략할 수 있습니다.
# cat PlayceCloud.Kube.v2.0.tar.MD5SUMS | md5sum --check                                                      
PlayceCloud.Kube.v2.0.tar: OK

파일 옮겨주기

# scp -i .ssh/[key_file] /playcecloud/srcdata/[File_Name] [Deploy_ip]:/playcecloud/srcdata          

# deploy 서버에 접속 후 옮겨진 파일들을 확인할 수 있습니다.
[root@centos-deploy ~]# ll /playcecloud/srcdata/
total 60205024
-rw-r--r--. 1 root root  2484516864 Jan 16 05:43 PlayceCloudData.DeployBase.v2.0.tar
-rw-r--r--. 1 root root 21382474752 Jan 16 05:57 PlayceCloudData.K8SRegistry.v2.0.tar
-rw-r--r--. 1 root root  2935609344 Jan 16 06:01 PlayceCloudData.K8SRepo.v2.0.tar
-rw-r--r--. 1 root root 34826094592 Jan 16 06:11 PlayceCloudData.OSRepo.centos7.v2.0.tar
-rw-r--r--. 1 root root    21220352 Jan 16 05:59 PlayceCloud.Kube.v2.0.tar

Deploy 서버 설치하기

# 설치 파일을 압축 해제해줍니다.
# tar xpf /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar -C /playcecloud/
# ls /playcecloud/playcekube
assets  bin  certificates  keycloak  kube-packages  kubespray  LICENSE  playcecloud.conf.example  rancher  README.md  release.txt
=> 압축 해제된 파일의 항목들을 확인합니다.

# Playce Kube의 버전 및 릴리즈 정보를 확인할 수 있습니다.
# cat /playcecloud/playcekube/release.txt
name: Playce Kube
version: v2.0
release-date: 2022-07-05

# playcecloud.conf 설정 
# cp /playcecloud/playcekube/playcecloud.conf.example /playcecloud/playcecloud.conf
# 환경에 맞게 설정값을 변경해줍니다. 보통 PLAYCE_DOMAIN과 UPSTREAM_DNS을 확인하며, PLAYCE_DEPLOY는 자동으로 deploy 서버 IP를 설정하지만 그렇지 못할 경우 수동으로 설정해줍니다.
# vi /playcecloud/playcecloud.conf
# PlayceCloud config env
...
PLAYCE_DEPLOY=$(ip -4 -o a | grep -Ev "slos" | head -n 1 | awk '{ print $4 }' | sed 's/(.*)/.*/1/')
...

# deploy 서버 설치를 진행합니다.
# Playce Kube에서 사용할 데이터 압축을 풀고 서비스를 실행하고 인증서 등을 생성합니다.
# /playcecloud/playcekube/bin/install_playcekube
[INFO] ######## PlayceCloud data PlayceCloudData.OSRepo.centos7.v2.0.tar untar start ########

Estimated: [==================================================]
Progess:   [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]
...
Generating a 2048 bit RSA private key
.............................................+++
..........................................................................................+++
writing new private key to '/playcecloud/data/certificates/ca/playcecloud_rootca.key'
-----
Using configuration from /playcecloud/playcekube/certificates/openssl.conf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'KR'
organizationName      :ASN.1 12:'Open Source Consulting Inc'
organizationalUnitName:ASN.1 12:'Playce Cloud Root CA'
Certificate is to be certified until Dec 23 07:42:56 2122 GMT (36500 days)

Deploy 서버 설치 확인

# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS              PORTS                                                                            NAMES
b03d0de9ed57   rancher/rancher:v2.6.6               "entrypoint.sh"          4 minutes ago   Up About a minute   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   playcekube_rancher
67f73b3b4d25   quay.io/keycloak/keycloak:18.0.2     "/opt/keycloak/bin/k…"   5 minutes ago   Up 5 minutes        8080/tcp, 8443/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp                    playcecloud_keycloak
39ac80d0c9e1   itsthenetwork/nfs-server-alpine:12   "/usr/bin/nfsd.sh"       5 minutes ago   Up 5 minutes        0.0.0.0:2049->2049/tcp, :::2049->2049/tcp                                        playcecloud_nfs
752263d5648a   nginx:1.20.2                         "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes        0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp         playcecloud_repository
c8ec6f29b073   ubuntu/bind9:9.16-21.10_edge         "docker-entrypoint.sh"   5 minutes ago   Up 5 minutes        0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, :::53->53/tcp, :::53->53/udp, 953/tcp    playcecloud_bind9
98aebe4e1be9   registry:2.7.1                       "/entrypoint.sh /etc…"   5 minutes ago   Up 5 minutes        0.0.0.0:5000->5000/tcp, :::5000->5000/tcp                                        playcecloud_registry

# playcecloud_nfs: Playce Kube에서 Persistent volume을 사용할 수 있도록 기본적으로 제공하는 NFS 서버입니다.
# playcecloud_repository: Playce Kube에서 사용하는 각종 레포지토리 서버입니다.
# playcecloud_bind9: Playce Kube에서 사용하는 DNS 서버입니다. 클러스터 설치시 해당 정보가 자동으로 설정됩니다.
# playcecloud_registry: Playce Kube에서 사용하는 컨테이너 이미지 레포지토리 서버입니다.
  • rancher
  • rancher란 컨테이너와 쿠버네티스 클러스터를 관리, 배포하기에 최적화된 도구입니다.
    • rancher의 장점
      1. 대부분의 프라이빗/퍼블릭 클라우드, On-premise Baremetal, VM 등 다양한 환경을 지원합니다.
      2. 통합 멀티 클러스터 관리, 앱 카탈로그 등 다양한 기능과 관리 도구를 제공합니다.
      3. 운영자는 컨테이너 관리 / 관리자는 인증, 접근 제어, 인프라 관리에 집중하는 등 역할별 관리가 가능해집니다.
  • keycloak
  • keycloak은 계정 관리 및 access 관리를 제공해주고, SSO(single-sign-on)을 가능하게 해주는 오픈소스입니다.
    • SSO(Single-Sign-On)란? SSO는 한번의 로그인을 통해 그와 연결된 여러가지 다른 사이트들을 자동 접속하여 이용할 수 있도록 하는 방법입니다.
    • keycloak의 기능
      1. 다중 프로토콜 지원(OpenID Connect, OAuth 2.0 및 SAML 2.0의 세가지 프로토콜을 지원)
      2. 통합 인증 지원(Single-sign-on/sign-off)
      3. 관리자 / 계정 관리 콘솔 제공
      4. ID 중개와 소셜 로그인 지원
      5. 사용자 정의 UI 지원

클러스터 설치 사전 준비사항

# 기본적으로 있는 kubespray_ssh와 kubespray_ssh.pub 파일을 삭제합니다.
# rm /playcecloud/playcekube/kubespray/kubespray_ssh 
# rm /playcecloud/playcekube/kubespray/kubespray_ssh.pub

# Bastion에 있는 개인키는 Deploy로 복사하고, 공개키는 생성해줍니다.
# scp -i .ssh/[Key_file] .ssh/[Key_file] root@[Deploy_IP]:/playcecloud/playcekube/kubespray/kubespray_ssh

# vi /playcecloud/playcekube/kubespray/kubespray_ssh.pub

ssh-rsa ...

개인키를 만든 사이트에서 공개키를 확인할 수 있습니다.
공개키 내용을 복사해 공개키 파일에 붙여 넣어주시면 됩니다.

클러스터 설치 및 구성

# 샘플 env 파일 복사
# cp -rp /playcecloud/playcekube/kubespray/kubespray-sample.env /playcecloud/data/kubespray/envfiles/k8s.env

# 환경에 맞게 파일 내용 수정해줍니다.
# vi /playcecloud/data/kubespray/envfiles/k8s.env
# inventory config
ANSIBLE_USER=root
#ANSIBLE_PASSWD=vmffpdltm
=> key 접속을 하기 때문에 패스워드는 주석 처리해줍니다.
...

# network config
# NTP와 DNS는 Deploy 서버의 IP를 적용해야 원활한 사용이 가능합니다.
PRIVATE_DNS=[Deploy_IP]
PRIVATE_NTP=[Deploy_IP]
...

# Master와 Worker 서버의 IP를 입력해줍니다.
# hosts config
MASTERS=playcekube-master01:[Master_IP]
WORKERS=playcekube-worker01:[Worker_IP]
INGRESSES=playcekube-worker01
...

# 설정한 환경 파일을 적용해 클러스터 설치 쉘을 실행해줍니다.
# /playcecloud/playcekube/bin/playcekube_kubespray.sh -f /playcecloud/data/kubespray/envfiles/k8s.env

클러스터 설치 확인

# context를 변경해줍니다.
# kubectl config use-context admin@k8s
Switched to context "admin@k8s".

# 노드 확인하기 
# kubectl get node -o wide
NAME                  STATUS   ROLES                  AGE    VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
playcekube-master01   Ready    control-plane,master   6h2m   v1.22.8   10.252.1.125   <none>        CentOS Linux 7 (Core)   3.10.0-1127.el7.x86_64   containerd://1.5.8
playcekube-worker01   Ready    ingress                4h4m   v1.22.8   10.252.3.11    <none>        CentOS Linux 7 (Core)   3.10.0-1127.el7.x86_64   containerd://1.5.8

# 파드 확인하기 
# kubectl get pod -A

Context란?

cluster와 user를 조합해서 생성된 값
# user: 클러스터에 접근할 유저의 정보
# cluster: 쿠버네티스 클러스터의 정보

이로써 클러스터 설치 및 마스터/워커 노드의 구성은 완료됐습니다.

이후에는 지원하는 addon들을 살펴보고 설치해보는 실습을 진행하겠습니다.

클러스터에서 사용하는 addon들은 helm 차트로 구성되어 쉽게 설치 및 관리가 가능합니다.

  • Addon이란?
  • Kubernetes Addon이란 Cluster에서 기능을 구현 및 확장하는 역할을 담당합니다.
  • Cluster가 필요한 기능을 실행하기 위해 pod와 Service의 형태로 존재하며, Addon에 사용되는 Pod는 Deployment, Replication controller 등에 의해 관리됩니다.
    • Addon의 종류
      • 네트워킹 Addon ex) Ingress, Calico 등
      • DNS Addon ex) CoreDNS, kube-dns
      • 대시보드 Addon ex) kubernetes Dashboard, Weave Scope 등
      • 컨테이너 자원 모니터링 Addon ex) Prometheus, Grafana 등
      • 클러스터 로깅 Addon ex) ELK 

지원 addon 목록 확인

# helm chart 레포지토리에서 지원하는 addon 리스트를 확인할 수 있습니다.
# helm search repo
NAME                                    CHART VERSION   APP VERSION                     DESCRIPTION
playcekube/argo-cd                      5.16.2          v2.5.4                          A Helm chart for Argo CD, a declarative, GitOps...
playcekube/argo-events                  2.0.3           v1.7.1                          A Helm chart for Argo Events, the event-driven ...
...

# 설치된 helm list 확인
# helm list -A
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
csi-driver-nfs  playcekube      1               2023-01-17 08:16:28.800897266 +0900 KST deployed        csi-driver-nfs-v4.0.0   v4.0.0
ingress-nginx   playcekube      1               2023-01-17 08:15:52.156592048 +0900 KST deployed        ingress-nginx-4.1.4     1.2.1
metrics-server  kube-system     1               2023-01-17 08:15:51.280797278 +0900 KST deployed        metrics-server-3.8.2    0.6.1

설치 방법 및 순서

각 Addon들에 대한 인증을 적용하기 위해 keycloak 우선 설치를 권고드립니다.

– 인증 툴 설치
# /playcecloud/playcekube/kube-packages/keycloak/install-helm-charts.sh
# /playcecloud/playcekube/kube-packages/oauth2-proxy/install-helm-charts.sh
  • Keycloak
    • Keycloak은 인증(Authentication)과 인가(Authorization)을 쉽게 해주고 SSO(Single-Sign-On)를 가능하게 해주는 오픈소스입니다.
  • OAuth2.0
    • OAuth는 인증을 위한 개방형 표준 프로토콜입니다.
    • 해당 프로토콜에서는 Third-party 프로그램에게 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식으로 작동합니다.
– 모니터링 툴 설치
# /playcecloud/playcekube/kube-packages/prometheus/install-helm-charts.sh
  • Prometheus
    • 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템입니다.
  • Grafana
    • 메트릭 데이터를 시각화 하는 오픈소스 도구입니다.
  • Prometheus 자체의 시각화 도구가 빈약해 Grafana나 함께 사용하는 경우가 많습니다. 보통 Prometheus로 데이터를 수집하고, Grafana로 해당 데이터를 보여주는 대시보드를 구성합니다.
– 백업 툴 설치
# /playcecloud/playcekube/kube-packages/minio/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/velero/install-helm-charts.sh
  • Velero
    • Velero는 Kubernetes Cluster 자원과 PV(persistent Volume)들을 Backup하고 복원할 수 있게 해주는 도구입니다.
    • Velero의 기능
      • 백업과 복원
      • 백업 스케줄링
      • Object Storage로 Sync
      • Cluster간 pod부터 pv까지 자원 Migration
  • minio
    • minio는 오픈소스로 제공되는 오브젝트 스토리지 서버입니다.
– 배포 툴 설치
# /playcecloud/playcekube/kube-packages/argo-cd/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/argo-rollouts/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/argo-events/install-helm-charts.sh
  • ArgoCD
    • ArgoCD는 GitOps 방식으로 관리되는 yaml파일의 변경사항을 감시하며, 현재 배포된 환경의 상태와 Github manifest(yaml)파일에 정의된 상태를 동일하게 유지하는 역할을 수행합니다.
      • GitOps란 DevOps의 실천 방법 중 하나로 애플리케이션 배포와 운영에 관련된 모든 요소들을 Git에서 관리한다는 의미입니다.
  • ArgoEvent
    • Argo Events 는 Webhook, S3, 일정, sns, sqs와 같은 다양한 소스의 이벤트에서 K8s 개체, Argo Workflows, Serverless 워크로드 등을 트리거하는 데 도움이 되는 Kubernetes용 이벤트 기반 워크플로 자동화 프레임워크입니다.
  • ArgoRollout
    • Blue/Green 배포, Canary 배포 방식 등 Progressive Delivery를 지원하는 툴입니다. 
– 서비스 메쉬 툴 설치
# /playcecloud/playcekube/kube-packages/linkerd2/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/linkerd-viz/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/linkerd-jaeger/install-helm-charts.sh 
# /playcecloud/playcekube/kube-packages/linkerd-multicluster/install-helm-charts.sh
  • 서비스 메쉬란?
    • 애플리케이션의 다양한 부분들이 서로 데이터를 공유하는 방식을 제어하는 기능과 이에 따라 라우팅, 보안 및 안정성 기능을 추가하는 도구입니다.
    • 특히 마이크로서비스 환경에서 많이 활용되는 네트워크 구성이며, 네트워크 형태가 mesh형식으로 구성되는 경우가 많아 서비스 메쉬라고 명명되었습니다.
    • 서비스 메쉬는 내부 네트워크의 복잡성을 단순화(Sidecar를 통한 네트워크 제어)하고 배포/운영이 쉽게 도와준다.
      • 사이드카(Sidecar) 패턴이란? 
      • 모든 MSA(Micro Service Architecture) 컨테이너가 각각에 대응되는 프록시 컨테이너를 가지는 형태를 뜻합니다.
    • linkerd는 트래픽 관리, 서비스 ID 및 보안, 안정성 등을 제공하는 ultralight 서비스 메쉬 오픈소스입니다.

마치며…

지금까지 CentOS 7.8 환경에서 Playce Kube를 이용해 클러스터를 설치하고 Master/Worker를 구축해보는 실습을 진행해보았습니다.

다음에는 더 좋은 블로그로 찾아뵙겠습니다.

감사합니다!

Playce Cloud팀의 카페인같은 엔지니어 변진영입니다. 클라우드 세상에서 언제나 깨어 있고, 깨우치기 위해 노력합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *