Skip to content

Latest commit

 

History

History
100 lines (90 loc) · 4.87 KB

helm3.md

File metadata and controls

100 lines (90 loc) · 4.87 KB

helm3

我们知道,Kubernetes 是一个能够部署和管理容器的平台。然而,在 k8s 里还没有抽象到 “应用” 这一层概念。一个应用往往由多个 k8s 资源 (Deployment、Service、ConfigMap)组成。所以,我们需要一个工具在 k8s 之上来部署和管理一个应用所包含的资源(K8s API Resource),这就是 Helm 所做的事情。 helm3 相较于helm2有较大的架构调整,具体可以参考 深度解读Helm 3 . 我们下面练习应用一下 helm3 ,并使用阿里云开放的 App Hub, 如果你还没有理解,你就把它想象成 linux 系统中的yum工具;

安装helm3

wget https://get.helm.sh/helm-v3.0.0-alpha.1-darwin-amd64.tar.gz
tar xvf helm-v3.0.0-alpha.1-darwin-amd64.tar.gz
cp helm /usr/local/bin/

测试helm3

需要具备一个 kubernetes 环境,我这边使用 minikube 来快速启动一个k8s集群, 由于需要下载官方镜像,所以走了我自己的代理,大家可以根据自身环境调整:

# https_proxy=192.168.10.153:1087  minikube start --docker-env HTTP_PROXY=192.168.10.153:1087 --docker-env HTTPS_PROXY=192.168.10.153:1087 --docker-env NO_PROXY=192.168.99.0/24
也可以使用国内的镜像仓库:
# minikube start --registry-mirror=https://registry.docker-cn.com

k8s 启动完成之后,就可以玩helm了,首先需要在k8s集群中初始化helm:

helm init

初始化之后, 首先可以看看从哪里能下载应用呢?

# helm repo list
NAME  	URL
stable	https://kubernetes-charts.storage.googleapis.com
local 	http://127.0.0.1:8879/charts

我们没有local的, 官方的又被xx了, 幸好有雷锋,下面我们添加一下app hub:

# helm repo add apphub https://apphub.aliyuncs.com
# helm repo list
NAME  	URL
stable	https://kubernetes-charts.storage.googleapis.com
local 	http://127.0.0.1:8879/charts
apphub	https://apphub.aliyuncs.com

下面你比如你想run一个wordpress,那我们可以像使用yum一样,先搜索一下:

# helm search wordpress
NAME            	CHART VERSION	APP VERSION	DESCRIPTION
apphub/wordpress	5.12.3       	5.2.1      	Web publishing platform for building blogs and ...
stable/wordpress	6.0.0        	5.2.2      	Web publishing platform for building blogs and ...

guestbook 也是相同搜索方式:
# helm search guestbook
NAME                   	CHART VERSION	APP VERSION	DESCRIPTION
apphub/guestbook       	0.2.0        	           	A Helm chart to deploy Guestbook three tier web...
apphub/guestbook-kruise	0.3.0        	           	A Helm chart to deploy Guestbook three tier web...

有两条记录,一个是 apphub 阿里云源里的,一个是 stable 官方的,下面我们使用阿里云提供的源来安装我们的 wordpress:

helm install wordpress apphub/wordpress --set service.type=NodePort
NAME: wordpress
LAST DEPLOYED: 2019-07-21 20:48:43.766862 +0800 CST m=+1.449421235
NAMESPACE: default
STATUS: deployed

NOTES:
1. Get the WordPress URL:

  export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services wordpress-wordpress)
  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  echo "WordPress URL: http://$NODE_IP:$NODE_PORT/"
  echo "WordPress Admin URL: http://$NODE_IP:$NODE_PORT/admin"

2. Login with the following credentials to see your blog

  echo Username: user
  echo Password: $(kubectl get secret --namespace default wordpress-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

查看pod是否创建成功:

# kubectl get pod
wordpress-mariadb-0                    1/1     Running   0          9m40s
wordpress-wordpress-56d9ddd46d-qmwj2   1/1     Running   0          9m35s
# kubectl get svc
wordpress-mariadb     ClusterIP   10.104.207.111   <none>        3306/TCP                     19m
wordpress-wordpress   NodePort    10.101.24.4      <none>        80:32714/TCP,443:32713/TCP   19m

按照提示, 获取访问 wordpress 的url进行访问,我的环境访问这个url 访问不通,不知道是否和我的代理有关系,因为创建应用时,我们指定了node port访问方式,所以我可以通过minikube ssh 登录到vm,查看下能访问到的br ip,通过这个ip访问 :

# minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 08:00:27:1F:A1:7A
          inet addr:192.168.99.100  Bcast:192.168.99.255  

所以也可以通过 192.168.99.100 这个ip 来访问我们的服务: wordpress

就是这么方便!!!