├── .github
└── ISSUE_TEMPLATE
│ └── ------.md
├── .gitignore
├── README.md
├── app
├── A.kubectl-more
│ ├── bash-completion.sh
│ └── k8s_rc.sh
├── B.kube-dashboard
│ └── dashboard.yaml
├── C.kubespray
│ ├── README.md
│ ├── SuperPutty-Sessions.XML
│ ├── Vagrantfile
│ ├── auto_pass.sh
│ ├── config.sh
│ ├── install_pkg.sh
│ ├── output
│ │ ├── kubespray-1.18.7.output
│ │ ├── kubespray-1.19.2.output
│ │ ├── kubespray-latest-failure.output
│ │ ├── kubespray-v2.17.0-k8s-v1.21.6.output
│ │ ├── vagrantup-0.6.4.output
│ │ ├── vagrantup-0.7.0.output
│ │ └── vagrantup-0.7.4.output
│ └── pre-kubespray.sh
├── D.DeepDiveContainer
│ ├── config.json
│ ├── ns-create.sh
│ └── ns-remover.sh
└── README.md
├── ch2
├── 2.1.3
│ ├── Vagrantfile
│ ├── vagrant_up(base_default).output
│ └── vagrant_up.output
├── 2.2.1
│ ├── Vagrantfile
│ └── vagrantup.output
├── 2.2.2
│ ├── Vagrantfile
│ └── install_pkg.sh
├── 2.2.3
│ ├── Vagrantfile
│ ├── config.sh
│ ├── install_pkg.sh
│ ├── ping_2_nds.sh
│ └── vagrantup.output
├── 2.3.3
│ └── k8s.XML
└── README.md
├── ch3
├── 3.1.3
│ ├── Vagrantfile
│ ├── config.sh
│ ├── install_pkg.sh
│ ├── master_node.sh
│ └── work_nodes.sh
├── 3.1.6
│ └── nginx-pod.yaml
├── 3.2.10
│ └── rollout-nginx.yaml
├── 3.2.4
│ ├── echo-hname.yaml
│ └── nginx-pod.yaml
├── 3.2.8
│ └── echo-hname.yaml
├── 3.3.1
│ ├── nodeport.yaml
│ └── req_page.ps1
├── 3.3.2
│ ├── ingress-config.yaml
│ ├── ingress-nginx.yaml
│ └── ingress.yaml
├── 3.3.4
│ ├── metallb-l2config.yaml
│ ├── metallb.yaml
│ └── req_page.ps1
├── 3.3.5
│ └── metrics-server.yaml
├── 3.4.1
│ ├── Vagrantfile
│ ├── config.sh
│ ├── install_pkg.sh
│ ├── master_node.sh
│ └── work_nodes.sh
├── 3.4.2
│ └── metallb-l2config.yaml
├── 3.4.3
│ ├── limits-pvc.yaml
│ ├── nfs-ip.yaml
│ ├── nfs-pv.yaml
│ ├── nfs-pvc-deploy.yaml
│ ├── nfs-pvc.yaml
│ └── quota-pvc.yaml
├── 3.4.4
│ ├── dynamic-pvc-deploy.yaml
│ ├── dynamic-pvc.yaml
│ ├── nfs-pvc-sts-svc.yaml
│ ├── nfs-pvc-sts.yaml
│ ├── standard.yaml
│ └── sts-svc-domain.yaml
└── README.md
├── ch4
├── 4.2.3
│ ├── index-BindMount.html
│ └── index-Volume.html
├── 4.3.1
│ ├── .explain-mvnw.txt
│ ├── .mvn
│ │ └── wrapper
│ │ │ ├── MavenWrapperDownloader.java
│ │ │ ├── maven-wrapper.jar
│ │ │ └── maven-wrapper.properties
│ ├── Dockerfile
│ ├── mvnw
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── stark
│ │ │ └── Industries
│ │ │ ├── UltronPRJApplication.java
│ │ │ └── UltronPRJController.java
│ │ └── resources
│ │ └── application.properties
├── 4.3.2
│ ├── .mvn
│ │ └── wrapper
│ │ │ ├── MavenWrapperDownloader.java
│ │ │ ├── maven-wrapper.jar
│ │ │ └── maven-wrapper.properties
│ ├── Dockerfile
│ ├── build-in-host.sh
│ ├── mvnw
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── stark
│ │ │ └── Industries
│ │ │ ├── UltronPRJApplication.java
│ │ │ └── UltronPRJController.java
│ │ └── resources
│ │ └── application.properties
├── 4.3.3
│ └── Dockerfile
├── 4.3.4
│ ├── Dockerfile
│ └── k8s-SingleMaster-18.9_9_w_auto-compl
│ │ ├── Vagrantfile
│ │ ├── config.sh
│ │ ├── install_pkg.sh
│ │ ├── master_node.sh
│ │ └── work_nodes.sh
├── 4.4.2
│ ├── create-registry.sh
│ ├── remover.sh
│ └── tls.csr
├── 4.4.3
│ ├── audit-trail
│ │ ├── Dockerfile
│ │ └── nginx.conf
│ ├── echo-hname
│ │ ├── Dockerfile
│ │ ├── cert.crt
│ │ ├── cert.key
│ │ └── nginx.conf
│ └── echo-ip
│ │ ├── Dockerfile
│ │ ├── cert.crt
│ │ ├── cert.key
│ │ └── nginx.conf
└── README.md
├── ch5
├── 5.2.2
│ ├── kustomize-install.sh
│ ├── metallb-l2config.yaml
│ ├── metallb.yaml
│ └── namespace.yaml
├── 5.2.3
│ └── helm-install.sh
├── 5.3.1
│ ├── jenkins-config.yaml
│ ├── jenkins-install.sh
│ ├── jenkins-volume.yaml
│ └── nfs-exporter.sh
├── 5.4.1
│ └── echo-ip-101.freestyle
├── 5.5.1
│ ├── Jenkinsfile
│ ├── README.md
│ └── deployment.yaml
├── 5.5.2
│ └── Jenkinsfile
├── 5.5.3
│ └── Jenkinsfile
└── README.md
├── ch6
├── 6.2.1
│ ├── nfs-exporter.sh
│ ├── prometheus-install.sh
│ ├── prometheus-server-preconfig.sh
│ └── prometheus-server-volume.yaml
├── 6.2.3
│ ├── nginx-status-annot.yaml
│ └── nginx-status-metrics.yaml
├── 6.4.1
│ ├── grafana-install.sh
│ ├── grafana-preconfig.sh
│ ├── grafana-volume.yaml
│ └── nfs-exporter.sh
├── 6.5.1
│ ├── alert-notifier.yaml
│ ├── nfs-exporter.sh
│ ├── prometheus-alertmanager-install.sh
│ ├── prometheus-alertmanager-preconfig.sh
│ ├── prometheus-alertmanager-volume.yaml
│ └── values.yaml
└── README.md
└── docs
├── 6.7.테인트(Taints)와 톨러레이션(Tolerations)의 파드 할당 조건_v2.pdf
├── k8s-stnd-arch
├── 2022
│ ├── 2022-k8s-stnd-arch.pdf
│ ├── README.md
│ └── img
│ │ └── 2022Jan13-landscape.cncf.io.png
├── 2023
│ ├── 2023-k8s-stnd-arch.pdf
│ ├── README.md
│ └── img
│ │ ├── 2022Nov21-landscape.cncf.io.png
│ │ └── 2023-k8s-stnd-arch-thumbnail.png
├── 2024
│ ├── 2024-k8s-stnd-arch.pdf
│ ├── README.md
│ └── img
│ │ ├── 2023Dec11-landscape.cncf.io.png
│ │ ├── 2023Oct11-graduated.cncf.io.png
│ │ └── 2024-k8s-stnd-arch-thumbnail.png
└── 2025
│ ├── 2025-k8s-stnd-arch.pdf
│ ├── README.md
│ └── img
│ ├── 2024Dec15-landscape.cncf.io.png
│ ├── 2024Nov09-graduated.cncf.io.png
│ └── 2025-k8s-stnd-arch-thumbnail.png
├── troubleshooting-kubernetes.ko_kr.v2.pdf
├── 실습 이슈#1 - VritualBox host-only Network(MAC,Linux).pdf
├── 확장본#1 - 젠킨스의 FreeStyle로 만드는 개발-상용 환경 배포.pdf
├── 확장본#2 - 자바 개발자를 위한 컨테이너 이미지 빌드.pdf
└── 확장본#3 - 깃옵스(GitOps)를 여행하려는 입문자를 위한 안내서.pdf
/.github/ISSUE_TEMPLATE/------.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 이슈 템플릿
3 | about: '책에 있는 내용이 잘못 된 경우 제기하는 이슈 '
4 | title: "[ 챕터 위치 / 페이지 ] 이슈 제목"
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 | **중요** 이슈를 받기 어려운 사항은 다음과 같습니다.
10 |
11 | 1. 책에 사용되는 환경 및 기술과 관련된 `질문`
12 | 또는 책에서 구성한 `환경외` 조건에서 발생한 이슈
13 | > `goto`
14 | > 1. 쿠버네티스 오픈 채팅: https://open.kakao.com/o/gxSooElb (암호: kubectl)
15 | > 2. 쿠버네티스 유저 그룹: https://www.facebook.com/groups/k8skr
16 |
17 | 2. 개개인의 환경에 영향을 받는 `vagrant` 에러(error)와 관련된 이슈
18 | 하지만 다음의 사항에 모두 해당 한다면 이슈를 부탁드립니다.
19 | > - [ ] 초기화된(새로 설치) 노트북(또는 PC)
20 | > - [ ] 책에서 제시한 프로그램과 동일한 버전 설치
21 | > - [ ] 할리스(IP가 겹침)를 제외한 카페 또는 집에서 실행
22 | > - [ ] 2대 이상 동일하게 문제가 발생함
23 |
24 | 3. 책의 `오타` 및 `형식의 오류`
25 | 이와 같은 경우에는 다음의 절차를 따라서 진행
26 | > - [ ] [길벗](https://www.gilbut.co.kr) 홈페이지에 접속
27 | > - [ ] 고객센터 클릭
28 | > - [ ] 1:1문의 접속 후에 오류 및 문의 사항을 제보
29 |
30 | 위의 사항 외에 `이슈`라면 가능한 빨리(평균적으로 1일 이내) 회신드리도록 하겠습니다.
31 |
32 | ## [ 내용 ]
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vagrant/
2 | .DS_Store
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커
2 |
3 |
4 |
5 |
6 | > 🔔 **_알림1:_** VirtualBox 6.1.28 이후 버전에서는 Vagrant host-only network와 관련된 이슈과 맥과 리눅스에서
7 | > 발생합니다. 자세한 내용은 [다음의 문서](https://github.com/sysnet4admin/_Book_k8sInfra/blob/main/docs/%EC%8B%A4%EC%8A%B5%20%EC%9D%B4%EC%8A%88%231%20-%20VritualBox%20host-only%20Network(MAC%2CLinux).pdf)를 확인하시기 바랍니다.
8 |
9 | > 🔔 **_알림2:_** MetalLB의 [Docker 허브 저장소](https://hub.docker.com/u/metallb)가 더이상 사용되지 않게 됨으로서, quay.io로 변경하였습니다.
10 | > 이에 MetalLB 관련한 문제가 생기시는 경우 현재 수정된 소스를 다시 내려받으시기 바랍니다.
11 |
12 | > 🔔 **_알림3:_** MetalLB의 [쿠버네티스 인증서](https://kubernetes.io/docs/setup/best-practices/certificates/)의 기본값이 1년인 관계로 OVA의 경우 사용을 못하는 경우가 발생합니다.
13 | > 이에 OVA를 10년으로 변경하였습니다. 그리고 만약 vagrant up으로 배포한 랩의 사용기간이 1년이 다 되어가는 경우 [인증서를 갱신](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)하시기 바랍니다.
14 |
15 | > 🔔 **_알림4:_** 3장 도입부의 Docker 버전과 `signature key`간의 이슈가 해결되었습니다. 자세한 사항은 [다음](https://github.com/sysnet4admin/_Book_k8sInfra/issues/33#issuecomment-1890823571) 내용을 참고하세요
16 |
17 | > 🔔 **_알림5:_** 구글이 호스트하고 있던 쿠버네티스 저장소(Repository)가 종료됨에 따라 이를 제공하는 주소가 변경되었습니다. 자세한 사항은 [다음](https://www.inflearn.com/news/1198141) 내용을 참고하세요
18 |
19 | > 🔔 **_알림6:_** 도커허브에서 이미지를 내려받는 정책이 변경되었습니다. (기존 100/6H, 변경 10/1H). 그래서 CNI인 Calico를 quay.io에서 내려받도록 변경하였습니다. 자세한 사항은 [다음](https://inf.run/FD91H) 내용을 참고하세요
20 |
21 | 이 저장소는 [컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커](http://www.yes24.com/Product/Goods/102099414) 책에 실습을 위한 코드를 제공합니다.
22 |
23 | 각 챕터별로 챕터에서 사용하는 스크립트 및 코드를 제공하고 있으며, 별도로 챕터에서 깊게 다루지 않는 부분은 [다른 저장소](https://github.com/iac-source)에서 다룹니다. 그리고 학습에 도움이 되실만한 문서를 디렉터리 [docs](https://github.com/sysnet4admin/_Book_k8sInfra/tree/main/docs)에 추가하였습니다. (2021.10.24)
24 |
25 | 이 저장소에서 다루는 챕터에 따라 제공되는 스크립트는 아래와 같습니다.
26 |
27 |
28 | ***
29 |
30 | ## 제공되는 스크립트
31 |
경로 | 35 |챕터 이름 | 36 |사용 목적 및 제공 스크립트 | 37 |
---|---|---|
ch2 | 42 |테스트 환경 구성하기 | 43 |베이그런트를 이용해서 가상 테스트 환경을 자동으로 배포하기 위한 Vagrantfile과 프로비저닝 스크립트를 제공합니다. | 44 |
ch3 | 47 |쿠버네티스로 알아보는 현대적인 인프라 환경 | 48 |쿠버네티스의 다양한 오브젝트를 구성하기 위한 야믈 파일과 쿠버네티스를 실습하기 위한 가상환경 배포 파일, 동작 테스트를 위한 스크립트를 제공합니다. | 49 |
ch4 | 52 |쿠버네티스를 이루는 컨테이너 도우미, 도커 | 53 |도커의 일반적인 사용 방법, 도커 고급 기능을 사용하기 위한 가상환경 배포 파일 및 사설 도커 레지스트리를 구성하기 위한 스크립트를 제공합니다. | 54 |
ch5 | 57 |지속적인 통합과 배포 자동화, 젠킨스 | 58 |헬름으로 쿠버네티스 환경에 젠킨스를 배포하고, CI/CD를 구현할 수 있는 스크립트를 제공합니다. | 59 |
ch6 | 62 |안정적인 운영을 완성하는 모니터링, 프로메테우스와 그라파나 | 63 |헬름으로 쿠버네티스 환경에 프로메테우스와 그라파나를 배포하고 모니터링할 수 있는 스크립트를 제공합니다. | 64 |
app | 67 |A. Kubectl을 더 쉽게 사용하기 | 68 |kubectl을 쉽게 사용할 수 있도록 구성된 스크립트를 제공합니다. | 69 |
B. Kubespray로 쿠버네티스 자동 구성하기 | 72 |kubespray를 통해 쿠버네티스 클러스터를 자동으로 구축하기 위한 스크립트를 제공합니다. | 73 ||
C. 쿠버 대시보드 구성하기 | 76 |쿠버네티스 대시보드를 배포하기 위한 스크립트를 제공합니다. | 77 ||
D. 컨테이너 깊게 들여다보기 | 80 |컨테이너를 깊게 들여다보기 위한 스크립트를 제공합니다. | 81 |
Running Bind Mount
9 | 10 | -------------------------------------------------------------------------------- /ch4/4.2.3/index-Volume.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |Running Volume
9 | 10 | -------------------------------------------------------------------------------- /ch4/4.3.1/.explain-mvnw.txt: -------------------------------------------------------------------------------- 1 | [INFO] Scanning for projects... 2 | Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.2.2.RELEASE/spring-boot-starter-parent-2.2.2.RELEASE.pom 3 | ######### 소스 코드 작성시 스프링부트를 사용했기 때문에 스프링부트 라이브러리와 관련 파일을 다운 받습니다. 이외에도 사용한 라이브러리가 있다면 이 단계에서 다운로드 받습니다. 4 | [중략] 5 | [INFO] -------------------< Stark.Industries:echo-ip-java >-------------------- 6 | ######### pom.xml의