commit 96af904717721bbf2c827b339cd4db0179c6006d Author: 변정훈 Date: Fri Feb 16 16:57:05 2024 +0900 release 2.22 diff --git a/README.md b/README.md new file mode 100644 index 00000000..50ce9e04 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +# Offline Kubespray + +## 개요 + +현재 모든 고객사가 모두 각기 다른 Kubernetes 버전 , 다른 CNI , 다른 CRI 로 구성이 되어 있음.
+올해 Kubernetes 버전 1.18 및 Docker 로 구축을 한 환경이 존재함.
+(최신 버전의 Kubernetes는 1.28 / Docker는 공식적으로 Kubernetes에서 지원에서 제외 되었다)
+사실상 이해하기 어려운 구성의 환경들이 있는 관계로 최소한의 버전과 환경 통일을 위해 제작 되었음.
+ +최신 버전인 v1.28 로 구성하고 싶었지만 v1.27 과 v1.28 을 지원하는 kubespray 2.23 버전에서 버그 존재
+정상적으로 클러스터 구성을 못하는 문제가 있어서 v1.26 까지 지원하는 kubespray 2.22 버전으로 구성하였습니다. + +## 준비물 + +1. 눈 + +2. 손 + +3. RHEL 8 계열 환경 + - 고객 환경에서 일반적으로 대부분 RHEL 8 계열을 사용함에 따라 RHEL 8 계열로 패키징 하였음
+ (redhat 8.6 / 8.8 / centos stream 8 테스트 완료) + - 추가적인 유지보수 , 버전 업 , 타OS 지원 예정 없음 + - 필요 할 경우 제공된 offline kubespray 를 참고하여 엔지니어가 유동적으로 수정하여 사용 + - 사용함에 있어서 오작동 혹은 사용법 문의는 언제든지 환영! + +4. root 계정 혹은 root 권한을 가진 계정 +5. offline kubespray 패키지 + +## 사용 방법 +1. `ssh-keygen -t rsa` 커맨드를 사용하여 ssh key 생성 (마스터 노드 혹인 bastion 서버에서만 진행) +2. `ssh-copy-id user@ip` 커맨드를 사용하여 모든 master , worker 노드에 key를 등록 (마스터 노드 혹인 bastion 서버에서만 진행 - root 혹은 root 권한을 가진 계정) +3. `offline.tar.gz` 패키지를 다운 받아 서버로 옮긴다 (마스터 노드 혹인 bastion 서버) +4. `tar -zxvf offline.tar.gz` 커맨드를 사용하여 압축 해제 +5. `cd offline` 커맨드로 `offline` 디렉토리 이동 +6. `vi kubespray/inventory/exem/inventory.ini` 명령어로 `invetory.ini` 오픈 + +```yaml +[all] +hostname1 ansible_host=10.10.43.231 ip=10.10.43.231 etcd_member_name=hostname1 ansible_port=22 node_role=master +hostname2 ansible_host=10.10.43.232 ip=10.10.43.232 ansible_port=22 node_role=node +hostname3 ansible_host=10.10.43.233 ip=10.10.43.233 ansible_port=22 node_role=node + +[kube_control_plane] +hostname1 + +[etcd] +hostname1 + +[kube_node] +hostname2 +hostname3 + +[calico_rr] + +[k8s_cluster:children] +kube_control_plane +kube_node +calico_rr +``` + +hostname1,2,3 , etcd_member_name 에 각각 사용할 서버들의 hostname을 입력
+ansible_host , ip 두 부분에 각 서버의 IP를 입력
+ansible_port 에 각 서버가 사용중인 ssh 포트 입력
+node_role 부분은 변경하지 않음, node_role=master 인 서버 즉 첫번째 입력을 하는 서버가 master 노드임
+ +7. `./installer.sh` 커맨드로 `install.sh` 실행 후 1번 메뉴 실행 + +![](https://t25540965.p.clickup-attachments.com/t25540965/8ee2a07c-680f-4252-a768-a09a6d47e26a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.25.42.png) + +키보드의 화살표 ↑ , ↓ 키를 눌러서 메뉴 이동 및 엔터로 선택 +자동으로 repo 구성 , python3.11 , rsync , ansible 설치 + + + +8. `./installer.sh` 커맨드로 [`install.sh`](http://install.sh) 실행 후 2번 메뉴 실행 + +![](https://t25540965.p.clickup-attachments.com/t25540965/d4a82573-68ab-49de-967b-da157cc7dabc/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.35.20.png) + +httpd 를 마스터 노드에 설치 및 설정 ➝ local repo 생성 +모든 노드는 해당 local repo에서(마스터 노드) 필요한 패키지를 다운로드 함 + + + +9. `./installer.sh` 커맨드로 [`install.sh`](http://install.sh/) 실행 후 3번 메뉴 실행 + +![](https://t25540965.p.clickup-attachments.com/t25540965/780d6dc6-8f90-4c42-a5e6-04374955b72f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-12-15%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.39.48.png) + +local registry 생성 (master node에 container) +kubernetes 클러스터 생성 + +10. 따란-! Kubernetes v1.26.5 구성 완료---!! \ No newline at end of file diff --git a/offline.tar.gz b/offline.tar.gz new file mode 100644 index 00000000..82aae349 Binary files /dev/null and b/offline.tar.gz differ diff --git a/tar-1.30-9.el8.x86_64.rpm b/tar-1.30-9.el8.x86_64.rpm new file mode 100755 index 00000000..d45cb87e Binary files /dev/null and b/tar-1.30-9.el8.x86_64.rpm differ