[SC02] Spring Cloud 실습을 위한 개발 환경 구성하기
개발 환경은 아래와 같이 구성하며, 인터넷 연결이 되어 있어야 합니다.
상당히 많은 S/W설치가 필요합니다. 상세한 가이드 글을 링크하였으니, 천천히 이해하면서 설치하여 보시기 바랍니다.
S/W 설치
1) Container platform 설치 및 구성
S/W | 설명 | 설치 위치 |
kubernetes | 아래 두 옵션 중 원하는 방식을 선택하여 설치하십시오. 학습 목적이라면 싱글 노드에 빠르게 구성하시고, 실무에 사용하고자 하면 멀티 노드에 구성하십시오. 주의) 싱글 노드에 구성할때 VM은 PC에 구성하지 마시고, public cloud에서 구매하거나 별도의 장비에 구성하시기 바랍니다. PC에 VM을 구성하면 리소스가 부족하여 제대로 동작하지 않을 수 있습니다. 1. 멀티 노드에 설치 1) k8s Multi node에 설치하기: happycloud-lee.tistory.com/35?category=832243 2) k8s web console 설치하기: happycloud-lee.tistory.com/36?category=832243 3) Metrics 서버 설치: happycloud-lee.tistory.com/38?category=832243 4) nginx ingress controller: happycloud-lee.tistory.com/167?category=832243 2. 싱글 노드에 minikube 설치 1) minikube 설치, web console 설치하기: https://happycloud-lee.tistory.com/20?category=832243 2) Metrics 서버 설치: minikube addons enable metrics-server 3) nginx ingress controller 설치: minikube addons enable ingress 4) kubens 설치: happycloud-lee.tistory.com/95?category=832243 |
k8s cluster |
bastion 서버 사용환경 설정 |
멀티 노드에 설치할때만 수행하세요. 1) 새로운 VM에서 kubernetes 사용환경 설정: happycloud-lee.tistory.com/69?category=832243 * 위 가이드 참조하여, docker, kubectl를 설치하고, root user로 k8s cluster접근할 수 있도록만 하십시오. 2) kubectx, kubens 설치: happycloud-lee.tistory.com/95?category=832243 |
bastion |
NFS서버 | 1) NFS서버 설치: happycloud-lee.tistory.com/46?category=832247 | bastion |
2) NFS Dynamic provisioning: happycloud-lee.tistory.com/178?category=832243 | k8s cluster | |
image registry | Private image registry 설치 harbor 설치 및 구성:happycloud-lee.tistory.com/165?category=832250 참고) 학습 목적이라면 Public image registry인 hub.docker.com를 사용해도 됩니다. harbor는 실무에서도 많이 사용하므로 경험해 보는 것을 추천합니다. 본 글에서는 harbor를 image registry로 사용 합니다. |
bastion |
github | https://github.com 이용 | N/A |
maven | openjdk 11, maven 설치: happycloud-lee.tistory.com/186?category=902419 ※ openjdk, maven만 설치하십시오. gradle은 실습에서 사용하지 않습니다. |
bastion |
git CLI | 'git 설치'로 google검색하여 OS에 맞게 설치 | PC, bastion |
Jenkins | 배포를 위한 툴입니다. https://happycloud-lee.tistory.com/48?category=832247 |
k8s cluster |
Sonarqube | Jenkins를 이용하여 배포할때 소스에 대한 보안검사를 수행하는 툴입니다. https://happycloud-lee.tistory.com/49?category=832247 |
k8s cluster |
2) 개발자 PC환경 구성하기
개발자 PC에 아래 S/W를 설치 하십시오.
- openjdk 11 설치: https://happycloud-lee.tistory.com/186
- Node.js: nodejs.org/ko/
- 통합개발환경
- STS(Spring Tool Suite):spring.io/tools
- MS Visual Studio Code: https://happycloud-lee.tistory.com/205
- image registry: harbor가 아닌 public image registry(hub.docker.com/)를 사용하는 경우 회원 가입
- git: github.com/에 접근하여 회원 가입
- SQL Client 설치: DBeaver(dbeaver.io/)
- Terminal 프로그램(Window사용자만): MobaXTerm(mobaxterm.mobatek.net/) 설치. Mac User는 기본 Terminal사용.
- NotePad++ (Window사용자만): https://notepad-plus-plus.org/downloads/설치
3. 사용환경 구성
bastion서버로 로그인하여 작업합니다.
TIP) 터미널 timeout시간을 조정하려면 아래 글을 참조하여 TMOUT 환경변수를 지정하십시오.
happycloud-lee.tistory.com/180?category=832818
kubernetes namespace, OS user등은 본인의 nickname이나 이름 약어를 사용합니다.
저는 'hklee'를 사용합니다. 앞으로'hklee'라는 text가 나오면 별도 설명 없어도 본인의 것으로 바꾸시기 바랍니다.
1) kubectl Alias 만들기
[root@nfs cmd]# which kubectl
/usr/bin/kubectl
[root@nfs cmd]# cp /usr/bin/kubectl /usr/bin/k
※ Alias나 symbolic link를 이용해도 됩니다. 단, 이런 경우 'watch'명령과 kubectl명령을 함께 사용하지 못합니다. : happycloud-lee.tistory.com/88?category=832243
2) OS계정 생성과 kubernetes 사용 환경 설정
아래 글을 참조하여 본인의 OS계정과 kubernetes 사용 환경 설정을 하십시오.
https://happycloud-lee.tistory.com/223?category=832243
3) CI/CD tool 설치: run-cicd
생성 OS user로 접근한 후 run-cicd라는 CI/CD tool을 설치합니다.
run-cicd에는 CI/CD shell, 배포 Yaml templates, Dockerfile들이 있습니다.
run-cicd는 Jenkins, bamboo와 같은 툴 없이 CI/CD를 할 수 있도록 제가 만든 것입니다.
보다 자세한 설명은 run-cicd: Linux shell로 만든 가벼운 CI/CD tool을 참조하십시오.
[root@nfs cmd]# su - hklee
마지막 로그인: 월 1월 11 23:03:25 CST 2021 일시 pts/0
[hklee@nfs ~]$ git clone https://github.com/happyspringcloud/run-cicd.git
Cloning into 'run-cicd'...
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 63 (delta 23), reused 62 (delta 22), pack-reused 0
Unpacking objects: 100% (63/63), done.
run-cicd를 어디서든 실행할 수 있게 하기 위해, symbolic link를 ~/bin디렉토리에 만듭니다.
[hklee@nfs ~]$ mkdir -p ~/bin
[hklee@nfs ~]$ ln -s ~/run-cicd/cmd/run-cicd ~/bin/run-cicd
[hklee@nfs ~]$ ll ~/bin
total 49572
-rwxr-xr-x. 1 root root 78564 Dec 4 02:19 certbot-auto
-rwxr-xr-x. 1 root root 12218968 Sep 24 10:51 docker-compose
-rwxr-xr-x. 1 root root 38457344 Dec 4 03:08 helm
lrwxrwxrwx. 1 root root 38 Jan 12 08:36 run-cicd -> /home/hklee/run-cicd/cmd/run-cicd
4) git organization 만들기
github에 spring cloud 전용의 organization을 만듭니다.
5) image registry에 project 만들기
image registry로 hub.docker.com을 사용한다면 가입한 userid를 project로 사용하시면 됩니다.
별도의 project(=organization)를 만들려면, 유료로 업그레이드 하셔야 합니다.
image registry로 harbor를 사용한다면 아래와 같이 LDAP에 user를 만들고, project를 만드십시오.
- LDAP에 user만들기
LDAP에 본인의 id로 user를 생성합니다.
user생성 방법은 'LDAP에 사용자/그룹 추가하기'를 참조하세요.
- harbor.io에 project만들기
https://harbor.io를 위에서 만든 본인ID로 로그인합니다. 최초 1회 로그인해야 harbor에 계정이 만들어지기 때문입니다.
로그아웃 후 admin 계정으로 로그인 합니다. 암호는 passw0rd입니다.
Administration > Users를 클릭하고, 본인ID를 체크한 후 [SET AS ADMIN]을 누르십시오.
'sc-hklee'라는 프로젝트를 생성합니다.
Member로 hklee를 추가하고, Project Admin role을 부여합니다.