Micro Service/mSVC개발

[SC02] Spring Cloud 실습을 위한 개발 환경 구성하기

Happy@Cloud 2021. 2. 14. 03:12

개발 환경은 아래와 같이 구성하며, 인터넷 연결이 되어 있어야 합니다.

상당히 많은 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를 설치 하십시오. 

 

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 

 

OS user생성과 kubernetes config 자동화 shell

cluster를 여러 사람이 사용하기 위해서는 OS user를 각각 만들고, 각 OS user에게 특정 namespace만 Write할 수 있도록 허용해야 합니다. 이를 자동화하기 위한 Shell을 공유합니다. root 또는 sudo권한을 부여

happycloud-lee.tistory.com

 

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을 부여합니다.