Skip to content

更新 yaml 文件,以因應kubernetes 和Helm 現行版本 #2

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 64 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ kubectl edit deployments my-deployment
接著我們會看到我們的 Yaml 檔

```yaml
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
Expand Down Expand Up @@ -541,7 +541,7 @@ kubectl rollout history deployment my-deployment
看到我們目前更改過的版本

```
deployment.extensions/my-deployment
deployment.apps/my-deployment
REVISION CHANGE-CAUSE
1 <none>
2 <none>
Expand Down Expand Up @@ -574,7 +574,7 @@ kubectl rollout undo deploy my-deployment --to-revision=2
`deployment.yaml`

```yaml
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: blue-nginx
Expand All @@ -593,7 +593,7 @@ spec:

---

apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: purple-nginx
Expand Down Expand Up @@ -670,24 +670,32 @@ purple-service NodePort 10.107.21.77 <none> 80:32086/TCP 60s
`ingress.yaml`

```yaml
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
name: reverse-proxy-ingress
spec:
rules:
- host: blue.demo.com
http:
paths:
- backend:
serviceName: blue-service
servicePort: 80
- path: /
pathType: Prefix
backend:
service:
name: blue-service
port:
number: 80
- host: purple.demo.com
http:
paths:
- backend:
serviceName: purple-service
servicePort: 80
- path: /
pathType: Prefix
backend:
service:
name: purple-service
port:
number: 80
```

我們一樣透過 `kubectl create -f ingress.yaml` 來建立我們的 ingress 物件。並使用 `kubectl get ingress` 來查看我們的 ingress 狀況:
Expand Down Expand Up @@ -728,12 +736,6 @@ echo 192.168.99.100 purple.demo.com >> /etc/hosts
brew install kubernetes-helm
```

下載完後,我們記得要 Helm 把 Cluster 配置初始化

```
helm init
```

接下來讓我們安裝 Wordpress 的 [Chart](https://github.com/helm/charts/tree/master/stable/wordpress),我們可以直接透過指令

```
Expand Down Expand Up @@ -825,7 +827,7 @@ helm create helm-demo
`deployment.yaml`

```yaml
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: blue-nginx
Expand Down Expand Up @@ -863,7 +865,7 @@ spec:
`ingress.yaml`

```yaml
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
Expand All @@ -887,6 +889,8 @@ replicaCount: 2
image:
repository: hcwxd/blue-whale

containerPort: 3000

service:
type: NodePort
port: 80
Expand All @@ -896,7 +900,12 @@ ingress:

hosts:
- host: blue.demo.com
paths: [/]
paths:
- path: /
pathType: Exact

autoscaling:
enabled: true
```

把參數提取出來後,我們就來依樣畫葫蘆地把 `template` 中其他三個 `yaml` 檔寫成可以接受參數的方式:
Expand All @@ -907,19 +916,21 @@ ingress:
apiVersion: apps/v1
kind: Deployment
metadata:
name: { { include "value-helm-demo.fullname" . } }
name: {{ include "value-helm-demo.fullname" . }}
spec:
replicas: { { .Values.replicaCount } }
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
app: { { include "value-helm-demo.fullname" . } }
app: {{ include "value-helm-demo.fullname" . }}
template:
metadata:
labels:
app: { { include "value-helm-demo.fullname" . } }
app: {{ include "value-helm-demo.fullname" . }}
spec:
containers:
- name: { { .Chart.Name } }
- name: {{ .Chart.Name }}
image: '{{ .Values.image.repository }}'
ports:
- containerPort: 3000
Expand All @@ -931,45 +942,57 @@ spec:
apiVersion: v1
kind: Service
metadata:
name: { { include "value-helm-demo.fullname" . } }
name: {{ include "value-helm-demo.fullname" . }}
spec:
type: { { .Values.service.type } }
type: {{ .Values.service.type }}
ports:
- port: { { .Values.service.port } }
- port: {{ .Values.service.port }}
targetPort: 3000
protocol: TCP
selector:
app: { { include "value-helm-demo.fullname" . } }
app: {{ include "value-helm-demo.fullname" . }}
```

`ingress.yaml`

```yaml
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "value-helm-demo.fullname" . -}}
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}
spec:
rules:
{{- range .Values.ingress.hosts }}
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- backend:
serviceName: {{ $fullName }}
servicePort: 80
{{- end }}
{{- end }}
{{- range .paths }}
- path: {{ .path }}
{{- with .pathType }}
pathType: {{ . }}
{{- end }}
backend:
service:
name: {{ include "helm-demo.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}
```

寫好後,我們就可以來一鍵部署我們的這三份檔案囉。我們可以直接在 `/helm-demo` 資料夾下輸入指令
寫好後,我們就可以來一鍵部署我們的這三份檔案囉。我們可以直接在 `/helm-demo` 資料夾下輸入指令 `helm install <RELEASE_NAME> .`

```
helm install helm-demo .
```

or

```
helm install .
helm install . --generate-name
```

```
Expand Down Expand Up @@ -1030,11 +1053,9 @@ replicaset.apps/gilded-peacock-helm-demo-5fc5964759 2 2 2
而其他常用的 Helm 指令還有:

```
helm delete --purge RELEASE_NAME
helm uninstall RELEASE_NAME
```

刪除一個 release(`--purge` 這個 flag 可以把該 `RELEASE_NAME` 釋放出來讓之後可以重複使用)。

```
helm upgrade RELEASE_NAME CHART_PATH
```
Expand Down