-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CD: 배포를 위한 환경 세팅 [학습] #7
Comments
codespace (postCreateCommand)를 제 개인 ubuntu machine으로 써서 테스트 해보겠습니다. codespace를 이용하면 무료 ubuntu machine이 빠르게 on/off가 가능하네요 |
1. 구성도를 직접 손으로 그려보기완료 2. kubernetes를 어떻게 설치할지?
마스터와 워커 노드에 k8s를 각각 설치를 해야한다.
다만 해당 설치는 오래걸리니까, worker AMI 이미지를 만들어놓고 복제 떠서 EC2 worker를 생성한다.
3. 언제 EKS로 넘어갈까?위 설명된 불편함 관련
scale up 관련
plugin 관련
ETC. gitops의 사용 포인트는? |
EKS의 단점 : 좀 비싸다 |
학습 시나리오 11. Terraform EC2https://github.com/junha-ahn/kotlin-boot-deployment/tree/main/terraform 2. Hello world Appinstall k8s (설치 중 오류)NO_PUBKEY (solved) 접기/펼치기Ubuntu는 패키지를 관리하기 위해 public key를 사용
해결 방법공개키를 등록한다 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <KEYID>
sudo apt-get update Q. ubuntu keysystem에 등록되어있어서 APT에 의해 자동으로 진행되는 과정이라고 이해 되는데, 왜 해당
추가 오류 발생
해결방법
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
reference Connection Refused 접기/펼치기master (CP) ec2 안에서..,
kubectl 로 계속 접근이 불가능해짐... 이유가 뭘까?... 해결어째서인지 terraform으로 모든 EC2 재빌드 후 해결
ubuntu@ip-10-0-1-139:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-1-139 NotReady control-plane 117s v1.27.3
ip-10-0-1-63 NotReady <none> 21s v1.27.3 Node NotReady 접기/펼치기$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-10-0-1-16 NotReady control-plane 14m v1.27.3
ip-10-0-1-70 NotReady <none> 13m v1.27.3
$ top
top - 14:29:34 up 23 min, 1 user, load average: 0.08, 0.23, 0.31
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 95.5 id, 0.2 wa, 0.0 hi, 0.0 si, 1.3 st
MiB Mem : 1937.3 total, 411.5 free, 319.9 used, 1205.9 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1450.1 avail Mem 위 커넥션 불안정 문제와 상관 있어 보인다. - 부하도 없는데...
$ kubectl version --output=json
{
"clientVersion": {
"major": "1",
"minor": "27",
"gitVersion": "v1.27.3",
"gitCommit": "25b4e43193bcda6c7328a6d147b1fb73a33f1598",
"gitTreeState": "clean",
"buildDate": "2023-06-14T09:53:42Z",
"goVersion": "go1.20.5",
"compiler": "gc",
"platform": "linux/amd64"
},
"kustomizeVersion": "v5.0.1"
}
The connection to the server 10.0.1.171:6443 was refused - did you specify the right host or port?
$ sudo kubectl version --output=json
{
"clientVersion": {
"major": "1",
"minor": "27",
"gitVersion": "v1.27.3",
"gitCommit": "25b4e43193bcda6c7328a6d147b1fb73a33f1598",
"gitTreeState": "clean",
"buildDate": "2023-06-14T09:53:42Z",
"goVersion": "go1.20.5",
"compiler": "gc",
"platform": "linux/amd64"
},
"kustomizeVersion": "v5.0.1"
}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
해결책 모든 이슈가 우분투 버전과 맞지 않은 설치 메뉴얼을 실행한 것
기존 설치방법에서 ubuntu 22.x 에 맞는 설치방법으로 변경
OS에 맞는 설치방법 적용 후 해결 1.
|
학습 시나리오 2학습 자료
Terraform EKS로 Hello World 띄우기EKS를 사용해서 어플리케이션 서비스 하기를 활용하여 $ kubectl port-forward simon-sample-5f8bf6796-qp8md 8080:8080
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
Handling connection for 8080
➜ /workspaces/kotlin-boot-deployment (main) $ curl 127.0.0.1:8080
Hello world!!~
CD pipeline 구축eks-blueprints-example-argocd를 활용하여 구성 지금 해야하는 것
Helm으로 Prod/QA 환경 구축 |
학습 시나리오 1EndPoint: None 에러접기/펼치기master_public_ip = "43.200.254.74"
master_private_ip = "10.0.1.86"
worker1_public_ip = "3.35.236.70"
worker1_private_ip = "10.0.1.193"
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-10-0-1-193 Ready <none> 47m v1.27.4 10.0.1.193 <none> Ubuntu 22.04.2 LTS 5.19.0-1025-aws containerd://1.6.21
ip-10-0-1-86 Ready control-plane 50m v1.27.4 10.0.1.86 <none> Ubuntu 22.04.2 LTS 5.19.0-1025-aws containerd://1.6.21 pod + service 조합apiVersion: v1
kind: Pod
metadata:
name: kotlin-app
labels:
name: kotlin-app
spec:
containers:
- name: core
image: devjunha/kotlin-app:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: 500m
memory: 1000Mi apiVersion: v1
kind: Service
metadata:
name: kotlin-app-service
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
protocol: TCP
nodePort: 30001
selector:
app: kotlin-app $ kubectl describe service kotlin-app-service
Name: kotlin-app-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=kotlin-app
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.99.133.216
IPs: 10.99.133.216
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 30001/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none> deployment + service 조합apiVersion: apps/v1
kind: Deployment
metadata:
name: kotlin-app-deployment
spec:
selector:
matchLabels:
app: kotlin-app
replicas: 1
template:
metadata:
labels:
app: kotlin-app
spec:
containers:
- name: core
image: devjunha/kotlin-app:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: 500m
memory: 1000Mi $ kubectl describe service kotlin-app-service
Name: kotlin-app-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=kotlin-app
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.96.139.200
IPs: 10.96.139.200
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 30001/TCP
Endpoints: 192.168.52.67:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none> |
메모
=> 2번으로 접근하기. TODO
기타 궁금한점
연관 자료https://developer.hashicorp.com/terraform/tutorials/kubernetes/helm-provider |
인프라 구성1차 설계실 환경 구현에 대한 이슈는 ticketing-infra로 이동했습니다. 해당 이슈는 학습에 대한 내용 기록 후 Close하겠습니다. |
학습 레퍼런스 추천
참고로 제가 위에서 완성한건 terraform-eks-blueprint라고 하는 라이브러리(?)를 사용해서 완성
|
Description
배포를 위한 최소 환경 세팅 (학습)
To do
학습 시나리오 1
Test Checklist
curl x.x.x.x:port
(public IP) 를 통해 "Hello World"가 출력되어야 합니다.학습 시나리오2
Finally
Tech Stack
The text was updated successfully, but these errors were encountered: