Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install kubernetes-helm
# helm 다운로드
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
# 실행권한 변경
chmod 700 get_helm.sh
# helm 설치
./get_helm.sh
# 버전 확인
helm version
# Helm Repository 추가
helm repo add stable https://charts.helm.sh/stable
# Repository 업데이트
helm repo update
brew install helm
helm search repo stable/mysql
NAME CHART VERSION APP VERSION DESCRIPTION
stable/mysql 1.6.3 5.7.28 Fast, reliable, scalable, and easy to use open-...
stable/mysqldump 2.6.0 2.4.1 A Helm chart to help backup MySQL databases usi...
helm show chart stable/mysql
apiVersion: v1
appVersion: 5.7.28
description: Fast, reliable, scalable, and easy to use open-source relational database
system.
home: https://www.mysql.com/
icon: https://www.mysql.com/common/logos/logo-mysql-170x115.png
keywords:
- mysql
- database
- sql
maintainers:
- email: o.with@sportradar.com
name: olemarkus
- email: viglesias@google.com
name: viglesiasce
name: mysql
sources:
- https://github.com/kubernetes/charts
- https://github.com/docker-library/mysql
version: 1.6.3
helm install mysql stable/mysql
AME: mysql-1588321002
LAST DEPLOYED: Fri May 1 08:16:55 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
MySQL can be accessed via port 3306 on the following DNS name from within your cluster:
mysql-1588321002.default.svc.cluster.local
To get your root password run:
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)
i99OpY3CRp
To connect to your database:
1. Run an Ubuntu pod that you can use as a client:
kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il
2. Install the mysql client:
$ apt-get update && apt-get install mysql-client -y
3. Connect using the mysql cli, then provide your password:
$ mysql -h mysql -p
To connect to your database directly from outside the K8s cluster:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
# Execute the following command to route the connection:
kubectl port-forward svc/mysql-1588321002 3306
mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}
helm ls
NAME NAMESPACE REVISION UPDATED STATUS C
HART APP VERSION
mysql-1588321701 default 1 2020-05-01 17:28:25.322363879 +0900 +09 deployed m
ysql-1.6.3 5.7.28
heml list
NAME NAMESPACE REVISION UPDATED STATUS C
HART APP VERSION
mysql-1588321701 default 1 2020-05-01 17:28:25.322363879 +0900 +09 deployed m
ysql-1.6.3 5.7.28
helm uninstall mysql-1588321701
release "mysql-1588321701" uninstalled
helm create nginxstd
apiVersion: v2
name: nginx-std
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.container.name }}
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ .Values.container.name }}
template:
metadata:
labels:
app: {{ .Values.container.name }}
environment: {{ .Values.environment }}
spec:
containers:
- name: {{ .Values.container.name }}
image: {{ .Values.container.image }}:{{ .Values.container.tag }}
ports:
- containerPort: {{ .Values.container.port }}
env:
- name: environment
value: {{ .Values.environment }}
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.container.name }}-service
labels:
app: {{ .Values.container.name }}
spec:
ports:
- port: 80
protocol: TCP
targetPort: {{ .Values.container.port }}
selector:
app: {{ .Values.container.name }}
type: LoadBalancer
environment: development
container:
name: nginx
port: 80
image: nginx
tag: latest
replicas: 2
helm install nginxstd ./nginxstd
# 확인
kubectl get all
helm list
# 삭제
helm uninstall nginxstd
helm package ./nginxstd
mkdir prod
mv ./nginxstd-0.1.0.tgz ./prod/
# 리포지토리 파일 생성 (index.yaml)
helm repo index ./prod
# 파일 생성 확인
cat ./prod/index.yaml


cd prod
git init
git add .
git branch -m main
git commit -am "initial commit"
git remote add origin https://github.com/dangtong76/helm-prod.git
git push origin main
helm repo add helm-prod https://dangtong76.github.io/helm-prod
helm repo list
helm search repo nginx
helm search repo redis
helm fetch stable/redis -d ./prod
helm repo index ./prod
git status
git add .
git commit -a -m "add redis"
git push origin main
helm repo update
helm search repo redis
업데이트 없이 "helm search repo redis" 를 검색하면 검색이 되지 않습니다.
helm list
helm install nginxstd helm-prod/nginx-std
# 또는
helm install helm-prod/nginx-std --generate-name
#확인
helm status nginxstd
kubectl get all
environment: development
replicas: 4
helm upgrade -f ./nginxstd/stage-values.yaml nginxstd helm-prod/nginx-std
helm history
helm rollback nginxstd 1
helm history nginxstd
helm helm status nginxstd
kubectl get po
helm show values helm-prod/nginx-std
environment: development
container:
name: nginx
port: 80
image: nginx:1.7.9
tag: hello
replicas: 2
helm upgrade --set replicas=4 --set environment=dev nginxstd helm-prod/nginx-std
helm history
helm status nginxstd
kubectl get po
helm uninstall nginxstd