diff --git a/README.md b/README.md index e6fc3b9..54e363a 100644 --- a/README.md +++ b/README.md @@ -460,7 +460,7 @@ kubectl edit deployments my-deployment 接著我們會看到我們的 Yaml 檔 ```yaml -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: annotations: @@ -541,7 +541,7 @@ kubectl rollout history deployment my-deployment 看到我們目前更改過的版本 ``` -deployment.extensions/my-deployment +deployment.apps/my-deployment REVISION CHANGE-CAUSE 1 2 @@ -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 @@ -593,7 +593,7 @@ spec: --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: purple-nginx @@ -670,24 +670,32 @@ purple-service NodePort 10.107.21.77 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 狀況: @@ -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),我們可以直接透過指令 ``` @@ -825,7 +827,7 @@ helm create helm-demo `deployment.yaml` ```yaml -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: blue-nginx @@ -863,7 +865,7 @@ spec: `ingress.yaml` ```yaml -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: web @@ -887,6 +889,8 @@ replicaCount: 2 image: repository: hcwxd/blue-whale +containerPort: 3000 + service: type: NodePort port: 80 @@ -896,7 +900,12 @@ ingress: hosts: - host: blue.demo.com - paths: [/] + paths: + - path: / + pathType: Exact + +autoscaling: + enabled: true ``` 把參數提取出來後,我們就來依樣畫葫蘆地把 `template` 中其他三個 `yaml` 檔寫成可以接受參數的方式: @@ -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 @@ -931,15 +942,15 @@ 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` @@ -947,29 +958,41 @@ spec: ```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 .` + +``` +helm install helm-demo . +``` + +or ``` -helm install . +helm install . --generate-name ``` ``` @@ -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 ```