Kubernetes 集群中使用 Helm 搭建 Spinnaker


在我們部署Spinnaker之前,我們需要一個YAML格式的配置文件,它會包含了一些配置信息。可以從Spinnaker Helm Chart repository[2]獲得這個文件。

$curl -Lo values.yaml https://raw.githubusercontent.com/kubernetes/charts/master/stable/spinnaker/values.yaml

%Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 2950 100 2950 0 0 2950 0 0:00:01 --:--:-- 0:00:01 10535

現在我們可以安裝Spinnaker了。用下面的命令可以把它部署在我們的Kubernetes集群里:

$ helm install-n kubelive stable/spinnaker -f values.yaml --timeout 300 --version 0.3.5 --namespace spinnaker

這里的-f參數的意思是指出安裝的配置文件。--timeout會讓Helm在遇到錯誤的時候等待至少300秒再退出。這篇文章中我們用的是0.3.5的版本,是用--version指定的。最后我們用--namespace指定了安裝Spinnaker的namespace。

過了一會兒,我們應該可以看到下面的輸出。

NAME: kubelive

LAST DEPLOYED: Wed Jan 3 11:26:12 2018

NAMESPACE: spinnaker

STATUS: DEPLOYED

RESOURCES:

…..

NOTES:

You will need to create2port forwarding tunnels inordertoaccessthe Spinnaker UI:

exportDECK_POD=$(kubectl getpods --namespace spinnaker -l "component=deck,app=kubelive-spinnaker" -o jsonpath="{.items[0].metadata.name}")

kubectl port-forward --namespace spinnaker $DECK_POD 9000

Visit the Spinnaker UI byopening your browser to: http://127.0.0.1:9000

Formore info onthe Kubernetes integration forSpinnaker, visit:

http://www.spinnaker.io/docs/kubernetes-source-to-prod

如果你遇到錯誤超時退出,可以用helm del --purge kubelive 命令去刪除,並且重新運行安裝命令。

所有的Spinnaker的相關組件都已經部署到了Spinnaker的namespace里了,我們可以用下面的命令去確認。

$ kubectl get pod --namespace=spinnaker

NAME READY STATUS RESTARTS AGE

kubelive-jenkins -67bb8f6b96-w5rdp 1/ 1Running 053m

kubelive-minio -5946fc9bcc-fcvv8 1/ 1Running 053m

kubelive-redis -7bb9d95468-kt2vq 1/ 1Running 153m

kubelive-spinnaker-clouddriver -6cd89c9bd5 -8rwln 1/ 1Running 153m

kubelive-spinnaker-deck -7846d6497-bjg7b 1/ 1Running 053m

kubelive-spinnaker-echo -6fd649469d -2pxzd 1/ 1Running 153m

kubelive-spinnaker-front50 -85dd9fd58c-ktj6j 1/ 1Running 153m

kubelive-spinnaker-gate -5868d9f8ff-hjpvg 1/ 1Running 053m

kubelive-spinnaker-igor-fdbdcc9c8-hldsk 1/ 1Running 053m

kubelive-spinnaker-orca-dd79c8bc7-xmwc7 1/ 1Running 053m

kubelive-spinnaker-rosco -7b9f77b5bb-drxhs 1/ 1Running 053m

在我們通過瀏覽器訪問Spinnaker之前,我們需要用下面命令打開端口轉發功能。也就是說這個命令將會把Spinnaker Web UI的端口映射到主機的端口上。

$ export DECK_POD=$(kubectl get pods --namespace spinnaker -l "component=deck,app=kubelive-spinnaker"-o jsonpath= "{.items[0].metadata.name}")

$ kubectl port-forward --namespace spinnaker $DECK_POD 9000

現在可以通過http://localhost:9000去訪問Spinnaker了。

通過Spinnaker去部署一個容器化的應用

現在我們可以通過部署一個Nginx Web服務器去熟悉Spinnaker的概念和術語。

首先在右上角的“操作”菜單下單擊“Create Application”來創建應用程序。“application”是一個資源的邏輯集合,包括負載均衡、安全組、服務組和集群。

現在我們在這個application里去創建一個負載均衡器。單擊菜單頂部的"Load Balancer",並且點擊“Create Load Balancer” 按鈕。

當你創建了一個新的負載均衡器,輸入prod作為堆棧的名字。80端口作為Target Port,並且選擇NodePort類型,點擊Create按鈕。

在 Clusters里,選擇 Create Server Group。

在下拉框里選擇nginx:latest作為容器。選擇nginx-prod作為負載均衡器,輸入10作為副本數。

在Container設置里,選擇Probes去創建Readiness Probe和Liveness Probe。最后點擊Create按鈕。

當這個實例在Server Group里狀態變成可用,如果是紅色則代表這個實例還是不可能的狀態。

切換到終端,並且運行下面命令可以得到服務的NodePort。

$ kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 <none>443/TCP 50m

nginx-prod NodePort 10.99.164.47 <none>80:31728/TCP 18m

這個負載均衡器已經被Spinnaker創建好,並且通過Kubernetes的NodePort對外提供訪問。我們現在可以直接通過Minikube的命令訪問了。

$ minikube service nginx-prod

Opening kubernetes service default/nginx-prod indefaultbrowser...

運行kubectl get pods可以顯示一共有10個Nginx的Pod被創建出來了。

$ kubectl getpods

NAME READY STATUS RESTARTS AGE

nginx-prod-v000 -6m642 1/ 1Running 09m

nginx-prod-v000 -9kxtv 1/ 1Running 09m

nginx-prod-v000-bpzw4 1/ 1Running 09m

nginx-prod-v000-f87gn 1/ 1Running 09m

nginx-prod-v000-h629g 1/ 1Running 09m

nginx-prod-v000-hkhjc 1/ 1Running 09m

nginx-prod-v000-jhnv2 1/ 1Running 09m

nginx-prod-v000-jmkgx 1/ 1Running 09m

nginx-prod-v000-s59pm 1/ 1Running 09m

nginx-prod-v000-ssz85 1/ 1Running 09m

在Spinnaker的儀表板擴展服務組(Server Group)一樣相同。

這篇文章涵蓋了在開發環境中,使用和運行Spinnaker的所有步驟。在本系列的下一篇文章里,我們會用Spinnaker去建立一個end-to-end的CI/CD pipeline環境,然后去發布一個應用的藍綠部署。敬請關注!

  1. https://www.thenewstack.io/tag/Learn-Spinnaker
  2. https://github.com/kubernetes/charts/tree/master/stable/spinnaker


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM