(二)Kubernetes打造云原生Devops--ingress搭建及service服务发布
1.打造属于自己的docker镜像仓库--harbor
上一节在安装kubelet、kubeadm....时,我将相关镜像push到了我本地harbor仓库,此处我就不介绍如何搭建harbor仓库。
2.搭建ingress
- Ingress公开了从群集外部到群集内服务的HTTP和HTTPS路由 。流量路由由Ingress资源上定义的规则控制。
此处参照官方文档(安装文档)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/baremetal/deploy.yaml
验证安装
kubectl get pods -n ingress-nginx \ -l app.kubernetes.io/name=ingress-nginx --watch
检测已安装的版本
要检测正在运行哪个版本的Ingress控制器,请在pod中执行exec并运行
nginx-ingress-controller --version
。POD_NAMESPACE=ingress-nginx POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx --field-selector=status.phase=Running -o jsonpath='{.items[0].metadata.name}') kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version
3.服务发布
微服务yaml文件
service/access/hello-application.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: selector: matchLabels: run: load-balancer-example replicas: 2 template: metadata: labels: run: load-balancer-example spec: containers: - name: hello-world image: gcr.io/google-samples/node-hello:1.0 ports: - containerPort: 8080 protocol: TCP
我们将服务部署至K8S中
kubectl apply -f ./hello-application.yaml
查看部署信息
kubectl get deployments hello-world kubectl describe deployments hello-world
如若是Java微服务,先使用Docker将服务制作成镜像(docker build),再将镜像push至harbor仓库,参考上述配置文件酌情修改。
4.ingress配置
- ingress yaml文件
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress spec: rules: - host: hello-world.test.com http: paths: - path: / backend: serviceName: hello-world servicePort: 8080
部署ingress yaml文件
kubectl apply -f ./ingress.yaml
此时,我们服务已发布至igress,如若是微服务架构,可通过ignress网关进行单一入口拦截,进行服务间的转发。
上述配置文件中host所配置的域名,你必须配置本地host才能进行访问
hello-world.test.com 10.5.55.39(K8S-masterIp)