Ryu
  • 👩🏻‍💻 Ryu / software_engineer
  • ✨Resume
  • Python3
    • Python3 가상환경 설정하기
      • Python3 vs Python2
      • Pyenv
      • Venv
      • Pip
    • Flask
      • Flask 설치하기
      • API Server 만들기
    • REST API
    • Command Line 활용하기
    • Module 사용하기
      • Pickle - 자료형을 파일로 저장할 때
    • MongoDB connection
      • Pymongo
    • WSGI
      • 💡WSGI 가 필요한 이유
      • Web Server / WSGI / Middleware / Application 구조
      • WSGI Middleware 종류
      • Gunicorn
        • Gunicorn vs Uwsgi
    • Dockerize
      • 💡Dockerize 가 필요한 이유
      • 1. Create Dockerfile
        • Gunicorn 으로 nginx 와 app 연결하기
    • Kubernetes 로 배포하기
      • 💡Kubernetes 가 필요한 이유
      • Helm 사용하기
      • Helm 으로 k8s 에 앱 배포하기
  • Open Tracing (정리중)
    • Open Tracing 이란 무엇인가
    • Python OpenTracing Example
    • Jaeger, Jaeger UI
    • Python Jaeger Tutorial
    • Zipkin 알아보기
    • Jaeger-client 리스팅
  • Microservice Architecture
    • Netflix의 MSA 컨셉
      • ⚡️ MSA 를 도입할때 고려해야할 점들
  • Paper
    • Dynamo: Amazon’s Highly Available Key-value Store
      • 1. Introduction
      • 2. Background
      • 3. Related Work
        • Related Paper) Pastry, Chord
        • Byzantine Fault Tolerance
      • 4. System Architecture
        • 4.1 System Interface
        • 4.2 Partitioning
        • 4.3 Replication
        • Hash Function
  • Frontend
    • CommonJS 와 AMD
    • RequireJS
    • WebSocket
      • WebSocket vs Socket.io
      • polling vs long polling vs streaming
    • Vue.js
      • Vue.js 에서 WebSocket 사용하기
      • [프로젝트] Vue, Vuex, AntDesignVue 로 운영툴 만들기
    • React x Redux 로 프로젝트 만들기
      • 0. React, Redux 를 선택한 이유
      • 1. 프로젝트 생성하고 Webpack4 적용하기
      • 2. React 와 ReactDOM 적용하기
      • 3. Material UI 적용하기
  • Data Engineering
    • Spark
      • Spark 이란?
      • 각 데몬의 역할 Driver, Master, Worker
      • 장단점 / 함께사용하는 툴 / 사용 사례
  • Service Mesh (정리중)
    • RPC
    • gRPC - Python Server 만들기
      • step 2.
Powered by GitBook
On this page
  • 💡 Helm 이란?
  • 📑 Chart 란?
  • Chart 구조
  • Helm 명령어로 Chart 생성하기
  • ⚡️ Create

Was this helpful?

  1. Python3
  2. Kubernetes 로 배포하기

Helm 사용하기

💡 Helm 이란?

  • Kubernetes 의 Package Managing Tool 입니다.

  • Python의 pip, Node.js 의 npm 과 비슷한 역할을 한다고 볼 수 있고, 플리케이션을 패키징하여 Kubernetes Cluster 에 배포할 수 있도록 도와줍니다.

  • Chart 라는 Packaging Format 을 사용합니다.

📑 Chart 란?

  • Helm 은 Chart 를 이용하여 애플리케이션을 정의하고 관리합니다.

  • k8s 에 올라갈 애플리케션을 구성하는 k8s 객체정보인 manifest template 파일과 설정값 정보를 담고 있습니다.

Chart 구조

  • 해당 애플리케이션 이름의 디렉토리 하위 Chart 관련 파일들이 구성됩니다.

예시

wordpress/
  Chart.yaml          # Chart에 대한 정보를 적어놓는 YAML 파일 (필수)
  LICENSE             # 라이센스에 대한 내용을 적어 놓는 텍스트 파일 (옵션)
  README.md           # 사용자가 읽을 수 있는 README 파일 (옵션)
  requirements.yaml   # Chart간 의존성이 있을 경우 이를 리스트 형태로 정의하는 파일 (옵션)
  values.yaml         # Chart 내에서 어플리케이션에 필요한 설정값들이 모여 있는 파일 (필수)
  charts/             # Chart가 다른 Chart에 의존성이 있을 경우 다른 의존하는 Chart들이 위치하는 디렉토리 (옵션)
  templates/          # kubernetes 객체를 정의하는 manifest template 파일들이 위치하는 디렉토리 (필수)
                      # gotpl로 구현된 template들이어야 하며 values.yaml의 값들과 합해져서 manifest 파일을 rendering함
  templates/NOTES.txt # chart 사용 방법을 설명해 놓은 텍스트 파일 (옵션)

Helm 명령어로 Chart 생성하기

⚡️ Create

$ helm create myapp

위 명령어를 실행하면 아래의 기본 파일들이 자동으로 생성됩니다.

  • templates : k8s 객체를 정의하는 manifest template 파일들 [필수]

  • Chart.yaml : Chart 정보가 담긴 AML 파일 [필수]

  • values.yaml : 애플리케이션에 필요한 변수들을 모아둔 파일 [필수]

  • charts : (다른 Chart에 의존성이 있을 경우) 의존하는 Chart 를 모아둔 디렉토리 [옵션]

✔️ chart.yaml

apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: myapp
version: 0.1.0

✔️ values.yaml

  • Chart 의 변수들을 정의하는 파일입니다.

  • 여기에 정의된 변수들은 template 안에서 키워드로 접근할 수 있습니다.

replicaCount: 1

image:
  repository: nginx
  tag: stable
  pullPolicy: IfNotPresent

nameOverride: ""
fullnameOverride: ""

service:
  type: ClusterIP
  port: 80

ingress:
  enabled: false
  annotations: {}
  hosts:
    - host: chart-example.local
      paths: []
  tls: []

resources: {}
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #   cpu: 100m
  #   memory: 128Mi

nodeSelector: {}
tolerations: []
affinity: {}

✔️ templates 디렉토리

  • k8s 객체를 정의하는 manifest template 파일들

  • 배포 시 사용되는 가장 기본적인 재료들이 들어있습니다. (아래)

    • deployment.yaml

    • ingress.yaml

    • service.yaml

PreviousKubernetes 가 필요한 이유NextHelm 으로 k8s 에 앱 배포하기

Last updated 6 years ago

Was this helpful?

Chart Architecture