zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    MySQL执行计划extra中的using index 和 using where using index 的区别
    Python + Apache Kylin 让数据分析更加简单!
    性能测试解读:Kyligence vs Spark SQL
    greenplum 表在各个节点数据的分布情况
    postgresql drop表后空间不释放
    PostgreSQL 查看表、索引等创建时间
    postgresql Kill掉正在执行的SQL语句
    linux ps命令查看最消耗CPU、内存的进程
    Linux shell
    TPC-H 下载参考
  • 原文地址:https://www.cnblogs.com/lvcisco/p/10764321.html
Copyright © 2011-2022 走看看