1. Infrastructure as Code (IaC)
인프라의 설정, 프로비저닝, 관리 등을 코드로 작성하여 자동화하는 방법론
1.1 Ansible 기능
Ansible은 Red Hat에서 개발한 오픈 소스 자동화 도구로, IaC를 실현하는 데 널리 사용
(1) 프로비저닝(Provisioning)
Ansible을 사용하여 서버를 생성하고, 네트워크 설정을 구성하며, 클라우드 리소스를 관리할 수 있습니다.
(2) 구성 관리(Configuration Management)
서버에 소프트웨어 패키지를 설치하고, 설정 파일을 배포하며, 서비스 상태를 관리합니다.
(3) 배포(Deployment)
애플리케이션을 배포하고, 업데이트하며, 롤백할 수 있습니다.
(4) 오케스트레이션(Orchestration)
여러 서비스와 애플리케이션 간의 작업 흐름을 관리합니다.
python 설치
root@cp-k8s:~/ansible# python3.10 -m venv /opt/python3.10-venv root@cp-k8s:~/ansible# source /opt/python3.10-venv/bin/activate
1.2 파일 생성 예제
이해하기 쉽도록 root 패스워드 및 등록을 진행합니다.
cp-k8s에서 ssh-keygen 생성 # ssh-keygen 모든 노드 root 패스워드 설정 root / vagrant cp-k8s에서 모든 노드의 root로 접근할 수 있도록 등록 # ssh-copy-id root@cp-k8s # ssh-copy-id root@w1-k8s # ssh-copy-id root@w2-k8s # ssh-copy-id root@w3-k8s
(1) 인벤토리 파일 (hosts)
[all] cp-k8s ansible_host=192.168.1.10 w1-k8s ansible_host=192.168.1.101 w2-k8s ansible_host=192.168.1.102 w3-k8s ansible_host=192.168.1.103
(2) Playbook (file_management.yaml)
--- - name: Manage files and directories hosts: all become: yes #sudo tasks: - name: Create a directory file: path: /opt/myapp state: directory mode: '0755' - name: Create a file with specific content copy: dest: /opt/myapp/config.txt content: | [settings] setting1 = value1 setting2 = value2 - name: Ensure a file is absent file: path: /opt/myapp/old_config.txt state: absent
(3) 실행
ansible-playbook -i hosts file_management.yaml
(4) 확인
# ansible -m shell -a "cat /opt/myapp/config.txt" -i hosts all w3-k8s | CHANGED | rc=0 >> [settings] setting1 = value1 setting2 = value2 w2-k8s | CHANGED | rc=0 >> [settings] setting1 = value1 setting2 = value2 cp-k8s | CHANGED | rc=0 >> [settings] setting1 = value1 setting2 = value2 w1-k8s | CHANGED | rc=0 >> [settings] setting1 = value1
2. kubespray (Ansible을 이용한 kubernetes 배포)
Kubernetes 클러스터를 설치하고 관리하기 위한 오픈소스 프로젝트
Ansible Playbook과 설정 파일을 사용하여 다양한 환경에서 Kubernetes 클러스터를 자동화하고 쉽게 배포
2.1 python 및 가상환경 설치
apt search python3.9 ... apt install -y python3.10 python3.10-venv python3.10 -m venv /opt/kubespray-2.25-venv # source kubespray-2.23-venv/bin/activate pip install -U pip pip install -r requirements.txt
2.2 Kubespray 구성
디렉토리 생성 및 이동
mkdir -p /opt/kubespray-2.23-git cd /opt/kubespray-2.23-git
kubespray 소스 다운로드
git clone https://github.com/kubernetes-sigs/kubespray.git -b release-2.23
디렉토리 이동
cd /opt/kubespray-2.23-git/kubespray
kubespray를 위한 python3 가상환경 구성
python3 -m venv /opt/kubespray-2.23-venv source /opt/kubespray-2.23-venv/bin/activate
pip 패키지 설치
pip install -U pip pip install -r requirements.txt
inventory
cp -R /opt/kubespray-2.23-git/kubespray/inventory/sample /opt/kubespray-2.23-git/kubespray/inventory/k8s cd /opt/kubespray-2.23-git/kubespray/inventory/k8s vi inventory.ini
[all] k8s-master01 ansible_host=192.168.110.21 k8s-master02 ansible_host=192.168.110.22 k8s-master03 ansible_host=192.168.110.23 k8s-worker01 ansible_host=192.168.110.24 k8s-worker02 ansible_host=192.168.110.25 [kube_control_plane] k8s-master01 k8s-master02 k8s-master03 [etcd] k8s-master01 k8s-master02 k8s-master03 [kube_node] k8s-worker01 k8s-worker02 [calico_rr] [k8s_cluster:children] kube_control_plane kube_node calico_rr
2.3 Kuberntes 배포
ssh 접속 확인
ansible -i /opt/kubespray-2.23-git/kubespray/inventory/k8s/inventory.ini -m ping all
클러스터 배포
ansible-playbook -i /opt/kubespray-2.23-git/kubespray/inventory/k8s/inventory.ini /opt/kubespary-2.23-git/kubespray/cluster.yml
node 상태 확인
kubectl get nodes -o wide
3. Rancher Desktop
3.1 Rancher Desktop 특징
단순 설치 macOS 및 Windows 사용자는 단순히 해당 설치 프로그램을 다운로드하여 실행할 수 있습니다. 리눅스 사용자는 인기 있는 패키지 관리자를 통해 설치할 수 있습니다. 자동으로 새로운 버전을 다운로드하고 설치하는 자동 업그레이드 기능(옵션).
구성 옵션
기본 구성과 함께 사용하거나 필요에 맞게 사용자 지정할 수 있습니다.
컨테이너 엔진, Kubernetes 버전, 응용 프로그램 기능 사용/사용 안 함을 선택할 수 있습니다. 네트워킹 설정을 구성하고 컨테이너 저장소, 레지스트리 등에 대한 액세스를 제어하는 옵션입니다.직관적 그래픽 사용자 인터페이스
사용자 친화적인 GUI 기능, 대시보드
이미지, 컨테이너, 애플리케이션 구성 등을 관리하기 위해 GUI 기능을 통해 잘 생각했습니다.로컬 쿠버네티스 리소스를 탐색하고 관리하는 데 도움이 되는 풀 블로운 클러스터 대시보드입니다.
컨테이너 공구 체인
빌드, 풀, 푸시, 스캔 이미지. 컨테이너 실행.
컨테이너 기반 개발 워크플로우에서 일상적인 작업을 지원하는 CLI 및 GUI 기반 기능. 클라우드 네이티브 에코시스템의 기타 도구인 인기 있는 IDE와 잘 통합됩니다.원활한 Kubernetes 업그레이드
Kubernetes 업그레이드가 워크로드에 미치는 영향을 쉽게 테스트합니다.
Kubernetes 업그레이드를 워크로드에 원활하게 적용할 수 있는 옵션을 제공하여 운영 환경에 영향을 미치기 전에 문제를 탐지할 수 있습니다.번들 유틸리티
인기 있는 도구를 즉시 사용할 수 있습니다.
도커, nerdctl, kubectl, hell 등과 같은 인기 있는 오픈 소스 CLI 도구의 최신 버전이 포함되어 있어 이러한 도구를 별도로 얻고 관리할 필요가 없습니다.