728x90 반응형 Cloud71 Kubernetes: run application via nks lion-app K8S lion-app 을 쿠바네티스로 구동시켜보자. 테스트로 사용하기 위해 기존에 사용하던 도커파일을 sqlite db 와 연결하게 끔 새롭게 만든다. App # test 를 진행하기위해 allowed host 에 와일드 카드 추가 ALLOWED_HOSTS = [ "localhost", "*", "127.0.0.1", # LOCAL_IP, ] FROM python:3.11-alpine LABEL likelion.web.backendauthor="Ivan kim " ARG APP_HOME=/app ENV PYTHONUNBUFFERED 1 ENV PYTHONDONTWRITEBYTECODE 1 WORKDIR ${APP_HOME} COPY ./requirements.txt ./ RUN pip .. Dev./Kubernetes & Helm 2023. 9. 24. Terraform: nks resource NCP 와 k8s nks 는 애플리케이션 컨테이너화, 배포, 스케일링 그리고 관리를 자동화하는 오픈 소스 플랫폼이다. kubernetes 환경을 구축하고, 배포 및 관리 그리고 클러스터 자동 확장이 가능하다. # Resource: ncloud_nks_cluster https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs/resources/nks_cluster 기본적인 작업을 마치고 plan 하는 과정에서 계속 에러가 발생했는데, NCP 에서 k8s 기능을 사용하려면 우선 동의를 하고 시작해야한다. # error │ Error: Status: 403 Forbidden, Body: {"error":{"errorCode":403.. Dev./Terraform 2023. 9. 23. Kubernetes: ConfigMap Configmap Configmap 은 key - value 쌍으로 기밀이 아닌 데이터를 저장하는데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 ConfigMap 을 사용할 수 있다. k create configmap fortune-config --from-literal=sleep-interval=15 k get configmap k get configmap fortune-config -o yaml k get configmap fortune-config -o yaml > fortune-config.yaml # fortune-config.yaml : 부수적인 부분들 삭제 후 apiVersion: v1 data: sleep-interval: "15" kind.. Dev./Kubernetes & Helm 2023. 9. 18. Kubernetes: svc - pod 구조 이해 K8S: ingress - svc - pod 구조 이해 Mission: fortune pod 에 대해 서비스를 만들어서, 내부 클러스터 ip 로 호출 우선 서비스를 만든다. # nodeport 로 서비스 생성 fortune-nodeport.yaml apiVersion: v1 kind: Service metadata: name: fortune-nodeport spec: type: NodePort selector: app: fortune ports: # 기본적으로 그리고 편의상 `targetPort` 는 `port` 필드와 동일한 값으로 설정된다. - port: 80 targetPort: 80 k create -f fortune-nodeport.yaml kimminhyeok@Ivans-Mac 0905 % k.. Dev./Kubernetes & Helm 2023. 9. 17. Kubernetes: 서비스, 파드의 관리자 서비스 생성 서비스는 파드 집합에 대한 안정적인 접근을 가능하게 하는 추상화 계층이다. (실행중인 애플리케이션 → 서비스로 노출 feat. selector) 서비스는 동일한 기능을 수행하는 파드들에게 단일 IP 주소와 DNS 이름을 제공하며 로드 밸런싱과 트래픽 라우팅을 관리한다. 그렇기 때문에 클러스터 목표 상태(desired state)와 일치하도록 생성되고 삭제되는 과정에서 동적으로 관리해줄 수 있게 된다. 새로운 디렉토리에 rs yaml 파일 생성 # ㅣion-rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: lion labels: app: lion spec: replicas: 3 selector: matchLabels: app: lion.. Dev./Kubernetes & Helm 2023. 9. 16. Kubernetes: 리소스 생성해보기 쿠버네티스는 공식문서 한글화가 굉장히 잘 되어 있는 듯 하다. Mission: replication controller / image: teacherssamko/simple-web:v1 / replicas: 3 https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicationcontroller/ # code apiVersion: v1 kind: ReplicationController metadata: name: test spec: replicas: 3 selector: app: test template: metadata: name: test labels: app: test spec: containers: - name: test image: .. Dev./Kubernetes & Helm 2023. 9. 15. Kubernetes: 명령어와 익숙해지기 Kubernetes 명령어 파드를 생성하고, 서비스를 통해 파드를 관리할 수 있게 레이블을 등록해주는게 일반적인 관리 방식이다. 이 과정에서 어떻게 하면 파드를 잘 생성해서 서비스의 endpoint 에 연결하여 관리가 잘 되는지 확인하는 작업들이 필요해 진다. 필요한 명령어들을 써보면서 메커니즘이 어떻게 돌아가는지 알아보자. label overwrite 레이블 명이 잘못 입력되었을 때, k label po lion-manual-v2 env=debug --overwrite 에러현상 The connection to the server 127.0.0.1:54007 was refused - did you specify the right host or port? 쿠버네티스 API 서버에 연결할 수 없음을 나타낸다.. Dev./Kubernetes & Helm 2023. 9. 15. Kubernetes: Intro Kubernetes 등장 배경 마이크로 서비스 아키텍쳐가 자리잡아 가면서 컨테이너를 여러가지를 띄우는 개발환경이 구축되다보니 이걸 어떻게 관리할까에 대한 고민에서 시작되었다. 그래서 구글에서 자신들의 관리 컨테이너 관리 툴을 오픈소스로 공개한 게 쿠바네티스이다. 쿠바네티스는 클러스터들을 모아두고 사용자가 원하는 만큼 원하는 컨테이너를 랜덤 서버에 띄워주고 스케일링도 처리해준다. 사용자는 쿠버네티스 마스터를 통해 원하는 컨테이너로 접근만해서 작업하면 되기 때문에 굉장히 편리하다. 특징 배포 및 스케일링 자동화 service discovery load balancing 자가 치유 고 가용성 IPv4, IPv6 이중 스택 자동화된 롤아웃 과 롤백 스토리지 오케스트레이션 시크릿과 구성관리 자동 빈 패킹 배치 실.. Dev./Kubernetes & Helm 2023. 9. 12. Terraform: AWS 서버구축2 Staging: Backed server DB 서버가 열렸으니 be 모듈을 추가해 db 인스턴스도 같이 띄워 보자. variables.tf # be module 을 열기위해 필요한 변수들 추가 ... NCP_ACCESS_KEY NCP_SECRET_KEY NCP_CONTAINER_REGISTRY IMAGE_TAG DJANGO_SETTINGS_MODULE DJANGO_SECRET_KEY main.tf # backend server module module "be" { source = "../modules/server" env = local.env name = "be" region = var.region vpc_id = module.network.vpc_id subnet_main_id = module.netw.. Dev./Terraform 2023. 9. 10. Terraform: AWS ssh connection NCP 로 접속할 땐 access key 와 secret key 를 변수로 선언해서 접근할 때마다 인증해주는 방식이었으나 aws 의 경우 credential 정보를 aws cli 로 대체하여 이를 대신한다. aws configure # result kimminhyeok@Ivans-Mac lion_infra % aws configure AWS Access Key ID [****************VCFO]: AWS Secret Access Key [****************e2+m]: Default region name [ap-northeast-2]: Default output format [JSON]: 작업하고 있는 로컬환경에서 등록해 놓은 aws configure 정보를 사용하여 해당 aws 콘솔.. Dev./Terraform 2023. 9. 9. Terraform: AWS 서버구축 Using Terraform for AWS NCP 로 staging 과 productions 을 구축하고 써봤다. 이제 AWS 에서 staging 환경까지 구축해보자. 사실 클라우드 서비스를 제공하는 회사에 따라 적용해야될 부분이 크게 다르지 않기 때문에 어렵지않게 적용시킬 수 있다. 단지 어떻게 공식문서를 확인해가면서 필요한 부분들을 찾아가는지 고민해야하는 부분이다. netwrok → db server → be server → loadbalancer 순서로 구현해보자. Modules 구조나 필요한 리소스는 NCP 와 다를게 없다. 공식문서를 잘 확인해서 필요한 부분들을 구현하자. network variables.tf # staing 에서 network 모듈로 전달하는 변수들 정리 env region m.. Dev./Terraform 2023. 9. 8. Terraform: Status 가 꼬이는 현상 가끔 모듈 정보를 바꿔야 할 때가 있다. module "servers" { >>>>> module "be" { terraform 으로 생성한 인스턴스가 운영중인데 무심코 module 정보를 바꾸고 init 을 했다면 terraform status 가 꼬여 문제가 발생하게 된다. apply 를 하든, destroy 를 하든, plan 을 하든 이미 status 가 쌓여 있는 시점에서는 새로운 모듈을 삽입해서 사용해서는 안되는 것 같다. (venv) kimminhyeok@Ivans-Mac staging % terraform state list data.ncloud_server_products.sm ncloud_public_ip.be ncloud_public_ip.db module.be.data.ncloud_.. Dev./Terraform 2023. 9. 7. 이전 1 2 3 4 5 6 다음 728x90 반응형