Skip to content

Commit

Permalink
feat: Add support for new Kubernetes versions and update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
kdgyun committed Nov 15, 2024
1 parent 2220b54 commit eb599ed
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 13 deletions.
10 changes: 5 additions & 5 deletions README-en.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
![](https://img.shields.io/static/v1?label=Ubuntu&message=<=22.04.2_LTS(Jammy_Jellyfish)&color=green&style=flat-square&logo=ubuntu)
![](https://img.shields.io/static/v1?label=Ubuntu&message=>=v18.04.06_LTS(Bionic_Beaver)&color=green&style=flat-square&logo=ubuntu)
![](https://img.shields.io/static/v1?label=Kubernetes&message=>=v1.24.15&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=Kubernetes&message=<=v1.27.5&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=Kubernetes&message=<=v1.31.2&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=cri-socket&message=cri-dockerd.v0.0.3&color=green&style=flat-square&logo=docker)
![](https://img.shields.io/static/v1?label=docker&message=v24.0.15&color=green&style=flat-square&logo=docker)
![](https://img.shields.io/static/v1?label=go&message=v1.20.5&color=green&style=flat-square&logo=go)
Expand All @@ -32,7 +32,7 @@
- Nodes (both master and workers) are to be in the same subnet. **For calico autodeployment to work** the Master node's IP(Host IP) must **not be within the same CIDR**.
- If accessing via ssh, use username/password authentication and not pem.
- The script automatically opens some ports (such as 6443), but ports may need to be manually opened in case of firewalls or company policies.
([ports required to be open for k8s installation](https://v1-24.docs.kubernetes.io/docs/reference/ports-and-protocols/))
([ports required to be open for k8s installation](https://kubernetes.io/docs/reference/networking/ports-and-protocols/))



Expand All @@ -44,7 +44,7 @@

### 1. Bootstrap download

From the home directory, run `curl -sSLO http://raw.githubusercontent.com/kdgyun/KubernetesAutoDeployment/main/k8s-cluster-bootstrap.sh` or download from github [**latest release version**](https://github.com/kdgyun/KubernetesAutoDeployment/releases/) and run k8s-cluster-bootstrap.sh.
From the home directory, run `curl -sSLO http://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/k8s-cluster-bootstrap.sh` or download from github [**latest release version**](https://github.com/kdgyun/k8s-cluster-bootstrap/releases/) and run k8s-cluster-bootstrap.sh.

<br />

Expand Down Expand Up @@ -83,14 +83,14 @@ The following shows the available options to run this bootstrap.
| ```-c / --cni``` | CIDR | Installs cni(with calico) during master node installation. | To utilize this option, the master's IP(Host IP) cannot overlap with calico's CIDR. Please utilize one of the following CIDR: ```10.0.0.0/8```, ```172.16.0.0/12```, ```192.168.0.0/16```. |
| ```-ct / --containertype``` | Container Runtime | Specify the type of container runtime k8s will use. If empty, it will default to ```docker(cri-dockerd)``` | For **cri-dockerd** write ```docker``` , <br /> for **containerd** write ```containerd``` as the parameter for this option. |
| ```-h / --help``` | | Display all options and their respective descriptions. | |
| ```-i / --ip``` | Host IP | Declare IP for master node (e.g, 10.0.0.1). <br /> In case of deploying k8s in a cloud (e.g, aws, gcp …) declare an IP with the scope of a private IP, not the public IP. | |
| ```-i / --ip``` | Master's (Host) IP | Declare IP for master node (e.g, 10.0.0.1). <br /> In case of deploying k8s in a cloud (e.g, aws, gcp …) declare an IP with the scope of a private IP, not the public IP. | |
| ```-kv / --k8sversion``` | | Displays all versions of k8s this bootstrap can install | |
| ```-m / --master``` | | Use this option to install a master ```-m``` | The flag ```-i/--ip``` is a must if this option is utilized. |
| ```-ms / --metricserver``` | | To install the metrics-server for Kubernetes, use the `-ms` flag. | It can only be installed when configuring a master node, so the `-m/--master` flag is also required. |
| ```-p / --password``` | Master(Host) node password | Required for ssh login using a password. <br /> It is done so the worker node can access the master during installation to obtain the join token. Both master and worker must be in the same subnet. | The flag ```-u/--username``` is a must if this option is utilized. |
| ```-r / --regularuser``` <br /> **(\*beta)** | HOME_PATH of regular user | This bootstrap is executed with sudo permission, thus this option is used to allow regular users (such as the user `ubuntu` in ubuntu servers) to also use k8s. <br /> run this option as ```-r /home/username```. Crucial that HOME_PATH is the same as **the regular user's home directory($HOME)** | Not a must option. Utilized when initializing a master node with ```-m```. |
| ```-u / --username``` | Master(Host) node username | ```username``` for ssh login. <br /> Set so a newly created worker node within the same subnet as the master node can fetch the join token from the master node. | The floag ```-p/--password``` is a must if this option is utilized. |
| ```-v / --version``` | k8s version | Declare k8s version to install. <br /> Supports k8s version from ```1.24.15``` to ```1.27.5``` and more details can be checked using the ```-kv``` or ```--k8sversion``` option. | The parameters for this options are to be written as ```x.y.z```. <br /> Not using this option will default k8s version to ```1.24.15``` and does not support RC nor beta versions since they are not stable versions. |
| ```-v / --version``` | k8s version | Declare k8s version to install. <br /> Supports k8s version from ```1.24.15``` to ```1.31.2``` and more details can be checked using the ```-kv``` or ```--k8sversion``` option. | The parameters for this options are to be written as ```x.y.z```. <br /> Not using this option will default k8s version to ```1.24.15``` and does not support RC nor beta versions since they are not stable versions. |
| ```-w / --worker``` | | Used to specify worker node installation. | the following 3 options are required: ```-i/--ip``` , ```-u/--username```, ```-p/-password```. |

<br />
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
![](https://img.shields.io/static/v1?label=Ubuntu&message=<=22.04.2_LTS(Jammy_Jellyfish)&color=green&style=flat-square&logo=ubuntu)
![](https://img.shields.io/static/v1?label=Ubuntu&message=>=v18.04.06_LTS(Bionic_Beaver)&color=green&style=flat-square&logo=ubuntu)
![](https://img.shields.io/static/v1?label=Kubernetes&message=>=v1.24.15&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=Kubernetes&message=<=v1.27.5&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=Kubernetes&message=<=v1.31.2&color=green&style=flat-square&logo=kubernetes)
![](https://img.shields.io/static/v1?label=cri-socket&message=cri-dockerd.v0.0.3&color=green&style=flat-square&logo=docker)
![](https://img.shields.io/static/v1?label=docker&message=v24.0.15&color=green&style=flat-square&logo=docker)
![](https://img.shields.io/static/v1?label=go&message=v1.20.5&color=green&style=flat-square&logo=go)
Expand All @@ -32,7 +32,7 @@
- 동일한 subnet 안에 있어야 함. 단, **calico까지 자동으로 배포할 시** Master node IP(HOST IP)가 **CIDR 내에 있으면 안됨**
- ssh 접속시 pem 키가 아닌 username과 password로 접속이 가능해야 함
- 스크립트 내 사용포트에 대해 open을 하나, 만약 별도의 자체 방화벽이 있을 경우 port 개방이 필요함
([필수 개방 포트 링크](https://v1-24.docs.kubernetes.io/docs/reference/ports-and-protocols/))
([필수 개방 포트 링크](https://kubernetes.io/docs/reference/networking/ports-and-protocols/))



Expand All @@ -44,7 +44,7 @@

### 1. 파일 다운로드

홈 디렉토리에서 `curl -sSLO http://raw.githubusercontent.com/kdgyun/KubernetesAutoDeployment/main/k8s-cluster-bootstrap.sh` 혹은 깃허브의 [**latest release 버전**](https://github.com/kdgyun/KubernetesAutoDeployment/releases/)을 다운로드하여 k8s-cluster-bootstrap.sh을 받기
홈 디렉토리에서 `curl -sSLO http://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/k8s-cluster-bootstrap.sh` 혹은 깃허브의 [**latest release 버전**](https://github.com/kdgyun/k8s-cluster-bootstrap/releases/)을 다운로드하여 k8s-cluster-bootstrap.sh을 받기

<br />

Expand Down Expand Up @@ -84,14 +84,14 @@ sudo ./k8s-cluster-bootstrap.sh [options] <value>
| ```-c / --cni``` | CIDR | 마스터 노드 생성시 cni(with calico)도 함께 설치합니다. | 해당 옵션을 사용할시, master node IP(Host IP)랑 대역이 겹치면 안되며, ```10.0.0.0/8```, ```172.16.0.0/12```, ```192.168.0.0/16``` 중 하나를 선택하여 입력하시면 됩니다. |
| ```-ct / --containertype``` | Container Runtime | container runtime 타입을 지정하고자 하는 경우 사용되는 옵션이며 지정하지 않을 경우 기본 값은 ```docker(cri-dockerd)``` 입니다. | 해당 옵션을 사용할시 **cri-dockerd** 의 경우 ```docker``` , <br /> **containerd** 의 경우 ```containerd``` 을 파라미터로 설정하여 사용하고자 하는 컨테이너 런타임을 입력하시면 됩니다. |
| ```-h / --help``` | | 옵션 및 설명을 볼 수 있습니다. | |
| ```-i / --ip``` | Host IP | host ip (e.g. 10.0.0.1) 입니다. <br /> 만약 클라우드(e.g, aws, gcp …) 등을 사용 할 경우, public IP가 아닌, private IP를 사용해야 합니다. | |
| ```-i / --ip``` | Master node (Host) IP | master node의 ip (e.g. 10.0.0.1) 입니다. <br /> 만약 클라우드(e.g, aws, gcp …) 등을 사용 할 경우, public IP가 아닌, private IP를 사용해야 합니다. | |
| ```-kv / --k8sversion``` | | 지원하는 쿠버네티스 버전을 보여줍니다. | |
| ```-m / --master``` | | master 노드를 생성하고자 하는 경우 ```-m``` 플래그를 사용하면 됩니다. | ```-i/--ip``` 플래그가 반드시 요구됩니다. |
| ```-ms / --metricserver``` | | kubernetes의 metrics-server를 설치하고자 하는 경우 ```-ms``` 플래그를 사용하면 됩니다. | master노드를 구성하는 경우에만 설치가 가능하기 때문에 ```-m/--master``` 플래그가 반드시 요구됩니다. |
| ```-p / --password``` | Master(Host) node password | ssh 로그인시 마스터 노드에 접속하기 위한 비밀번호입니다. <br /> 같은 서브넷 안에서 worker 노드 생성시 master 노드로부터 token을 갖고오기 위한 옵션입니다. | ```-u/--username``` 플래그와 반드시 같이 사용해야합니다. |
| ```-r / --regularuser``` <br /> **(\*beta)** | HOME_PATH of regular user | 현재 sudo 권한으로 실행한 user 외에 다른 일반 유저에 대해서도 접근 권한을 부여하고자 할 때 사용합니다. <br /> ```-r /home/username``` 과 같이 사용하며, 이 때 HOME_PATH는 반드시 **해당 계정의 홈 디렉토리($HOME)** 이어야 합니다. | 선택 옵션이나, ```-m``` (마스터 노드 생성) 때에만 사용되는 옵션입니다. |
| ```-u / --username``` | Master(Host) node username | ssh 로그인시 마스터 노드에 접속하기 위한 username입니다. <br /> 같은 서브넷 안에서 worker 노드 생성시 master 노드로부터 token을 갖고오기 위한 옵션입니다. | ```-p/--password``` 옵션과 반드시 같이 사용해야합니다. |
| ```-v / --version``` | k8s version | Kubernetes 버전을 설정하기 위해 사용됩니다. <br /> (e.g. -v 1.25.0) <br />지원 버전은 ```1.24.15``` 부터 ```1.27.5``` 까지이며 지원 버전을 상세하게 보고자 한다면 ```-kv``` 또는 <br /> ```--k8sversion``` 옵션을 통해 확인이 가능합니다. | 해당 옵션을 사용하고자 하는 경우 파라미터는 ```x.y.z``` 형식으로 주어져야 합니다. <br /> 만약 해당 옵션을 사용하지 않을 경우 기본 버전은 ```1.24.15``` 이며 RC 또는 beta 버전의 경우 정식 릴리즈 버전이 아니므로 지원하지 않습니다. |
| ```-v / --version``` | k8s version | Kubernetes 버전을 설정하기 위해 사용됩니다. <br /> (e.g. -v 1.25.0) <br />지원 버전은 ```1.24.15``` 부터 ```1.31.2``` 까지이며 지원 버전을 상세하게 보고자 한다면 ```-kv``` 또는 <br /> ```--k8sversion``` 옵션을 통해 확인이 가능합니다. | 해당 옵션을 사용하고자 하는 경우 파라미터는 ```x.y.z``` 형식으로 주어져야 합니다. <br /> 만약 해당 옵션을 사용하지 않을 경우 기본 버전은 ```1.24.15``` 이며 RC 또는 beta 버전의 경우 정식 릴리즈 버전이 아니므로 지원하지 않습니다. |
| ```-w / --worker``` | | worker 노드를 생성하고자 하는 경우 -w 플래그를 사용하면 됩니다. | ```-i/--ip``` , ```-u/--username```, ```-p/-password``` 3개의 옵션이 반드시 요구됩니다. |

<br />
Expand Down
79 changes: 79 additions & 0 deletions VERSIONLIST
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
1.24.15
1.24.16
1.24.17
1.25.0
1.25.1
1.25.2
1.25.3
1.25.4
1.25.5
1.25.6
1.25.7
1.25.8
1.25.9
1.25.10
1.25.11
1.25.12
1.25.13
1.26.0
1.26.1
1.26.2
1.26.3
1.26.4
1.26.5
1.26.6
1.26.7
1.26.8
1.27.0
1.27.1
1.27.2
1.27.3
1.27.4
1.27.5
1.27.6
1.27.7
1.27.9
1.27.10
1.27.11
1.27.12
1.27.13
1.27.14
1.27.15
1.27.16
1.28.0
1.28.1
1.28.2
1.28.3
1.28.4
1.28.5
1.28.6
1.28.7
1.28.8
1.28.9
1.28.10
1.28.11
1.28.12
1.28.13
1.28.14
1.28.15
1.29.0
1.29.1
1.29.2
1.29.3
1.29.4
1.29.5
1.29.6
1.29.7
1.29.8
1.29.9
1.29.10
1.30.0
1.30.1
1.30.2
1.30.3
1.30.4
1.30.5
1.30.6
1.31.0
1.31.1
1.31.2
18 changes: 15 additions & 3 deletions k8s-cluster-bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,19 @@ if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
exit 1
fi

SUPPORT_VERSION_LIST=("1.24.15" "1.24.16" "1.24.17" "1.25.0" "1.25.1" "1.25.2" "1.25.3" "1.25.4" "1.25.5" "1.25.6" "1.25.7" "1.25.8" "1.25.9" "1.25.10" "1.25.11" "1.25.12" "1.25.13" "1.26.0" "1.26.1" "1.26.2" "1.26.3" "1.26.4" "1.26.5" "1.26.6" "1.26.7" "1.26.8" "1.27.0" "1.27.1" "1.27.2" "1.27.3" "1.27.4" "1.27.5")
VERSION_LIST_URL="https://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/VERSIONLIST"

if curl -s --head "$VERSION_LIST_URL" | head -n 1 | grep -q "200"; then
# Read version list into an array
SUPPORT_VERSION_LIST=($(curl -s "$VERSION_LIST_URL"))
if [[ ${#SUPPORT_VERSION_LIST[@]} -eq 0 ]]; then
printstyle "Failed to fetch Kubernetes versions from $VERSION_LIST_URL. List is empty.\n" "danger"
exit 1
fi
else
printstyle "Failed to access the version list URL: $VERSION_LIST_URL\n" "danger"
exit 1
fi

VALID_PARAM2=false
VALID_WORKER=false
Expand Down Expand Up @@ -627,8 +639,8 @@ if [[ $VALID_MASTER == true ]]; then
sleep 120
mkdir $HOME_PATH/cni
cd $HOME_PATH/cni
curl -sSLO https://raw.githubusercontent.com/kdgyun/KubernetesAutoDeployment/main/cni/prefix.yaml
curl -sSLO https://raw.githubusercontent.com/kdgyun/KubernetesAutoDeployment/main/cni/suffix.yaml
curl -sSLO https://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/cni/prefix.yaml
curl -sSLO https://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/cni/suffix.yaml
cd $HOME_PATH
echo $(cat $HOME_PATH/cni/prefix.yaml>>$HOME_PATH/calico.yaml)
echo -e "\n - name: CALICO_IPV4POOL_CIDR\n value: "$CNI_CIDR"">>$HOME_PATH/calico.yaml
Expand Down

0 comments on commit eb599ed

Please sign in to comment.