云原生架构系列——kubernetes可视化部署

1 Jenkins构建镜像并push到Harbor仓库

安装Jenkins参见官方文档:Jenkins文档
maven配置
创建一个Springboot项目,在pom文件里配置下面的maven插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
            <!--镜像名,要符合harbor上的规则-->
            <imageName>www.harbor.com/harbor/hello:v1</imageName>
            <!--依赖的基础镜像-->
            <baseImage>www.harbor.com/harbor/jdk1.8:v1</baseImage>
            <!--需要执行的命令,此处是-->
            <entryPoint>["java", "‐jar","/${project.build.finalName}.jar"]</entryPoint>
            <!--相当于Dockerfile里的ADD-->
            <resources>
                <resource>                                                        
                    <targetPath>/</targetPath>                                                        
                    <directory>${project.build.directory}</directory>                                                       
                    <include>${project.build.finalName}.jar</include>                                                    
                </resource>
            </resources>
            <!--如果不配置,使用本地的镜像仓库-->
            <dockerHost>http://192.168.75.10:2375</dockerHost>
      </configuration>
</plugin>

在maven的settings.xml文件里需要指定插件

  <pluginGroups>
    <pluginGroup>com.spotify</pluginGroup>        
  </pluginGroups>

Jenkins配置
新增一个maven项目
在这里插入图片描述
配置git地址
在这里插入图片描述
配置构建命令
在这里插入图片描述
Harbor的用户名和密码也可以配在maven的settings文件里
在这里插入图片描述
此时docker-maven-plugin插件里需要加上

<configuration>
     <serverId>my-docker-registry</serverId>
     <registryUrl>https:www.harbor.com</registryUrl>
</configuration>

为了安全起见,可以将用户名和密码放在docker提供的credentials store里。
构建项目
在这里插入图片描述
出现以下信息表明镜像成功push到Harbor仓库
在这里插入图片描述
查看Harbor仓库
在这里插入图片描述

2 安装Helm

什么是Helm
在实际项目开发中,会有很多的yaml文件,这些yaml文件很可能会存在相互的依赖,部署和维护起来非常麻烦,通过Helm可以对这些yaml文件进行统一的管理。类似于linux里的yum指令,能够实现服务的一键安装。
Helm的工程结构

charts  #依赖包,相当于Java项目里的lib
Chart.yaml
templates  #资源文件模板
	deployment.yaml
	service.yaml
	pvc.yaml
	pod.yaml
Values.yaml   #公共资源文件

安装
手动下载Helm包上传到服务器并解压。下载地址:Helm下载地址
在这里插入图片描述
把helm文件拷贝到/usr/local/bin/目录下
在这里插入图片描述
2.x版本还需要安装tiller,3.x版本不用安装
查看是否安装成功
在这里插入图片描述

3 安装Ingress

什么是Ingress
前面介绍过用Service来做pod的负载均衡,参见:kubernetes服务发现与集群负载均衡。用Service做负载均衡有一个弊端,一个Service就要开一个NodePort,随着业务的增多,Service和NodePort也会增多,管理起来就变得非常麻烦。所以k8s提供了Ingress来对集群向外暴露服务,所有的请求都由Ingress来做负载均衡,路由到Service上。
安装
下载地址:Ingress下载地址
将deploy文件夹打包上传到服务器
在这里插入图片描述
修改mandatory.yaml里的镜像地址,改为国内的镜像地址
在这里插入图片描述
将Deployment改为DaemonSet,每一个节点都部署一份,同时删除replicas,DaemonSet默认创建一个pod。
在这里插入图片描述
开始创建pod
在这里插入图片描述
查看是否创建成功
在这里插入图片描述
创建Service

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      nodePort: 30060
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      nodePort: 30443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

在这里插入图片描述
创建ingress资源对象,生成访问规则

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: ingress.demo.com #定义访问的域名
    http:
      paths:
        - path: /
          backend:
            serviceName: nginx
            servicePort: 80

在这里插入图片描述

3 安装Dashboard

通过Helm安装Dashboard
添加仓库
在这里插入图片描述
拉取kubernetes-dashboard的包,然后解压
在这里插入图片描述
在这里插入图片描述
仿照values.yaml文件自定义一个yaml文件,用于替代values.yaml,需要加一些自定义的配置。
在这里插入图片描述

image:
  #如果下载的慢可以改用阿里云镜像
  repository: kubernetesui/dashboard
  tag: v2.0.3
  pullPolicy: IfNotPresent
  pullSecrets: []
replicaCount: 1
annotations: {}
labels: {}
extraEnv: []
podAnnotations:
  seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
nodeSelector: {}
tolerations: []
affinity: {}

resources:
  requests:
    cpu: 100m
    memory: 200Mi
  limits:
    cpu: 2
    memory: 200Mi
protocolHttp: false

service:
  type: ClusterIP
  externalPort: 443
  annotations: {}
  labels: {}

ingress:
  enabled: true
  hosts:
    - ingress.demo.com #ingress资源对象的域名
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  tls:
    #上传https证书,创建secret name,创建命令:
    #kubectl creat secret tls dashboard-secret --key demo.key --cert demo.crt -n kube-system
    - secretName: dashboard-secret #
      hosts:
        - ingress.demo.com

metricsScraper:
  enabled: false
  image:
    repository: kubernetesui/metrics-scraper
    tag: v1.0.4
  resources: {}
  containerSecurityContext:
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    runAsUser: 1001
    runAsGroup: 2001

metrics-server:
  enabled: false

#授权
rbac:
  clusterAdminRole: true

serviceAccount:
  create: true
  name:

livenessProbe:
  initialDelaySeconds: 30
  timeoutSeconds: 30

podDisruptionBudget:
  enabled: false
  minAvailable:
  maxUnavailable:

containerSecurityContext:
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  runAsUser: 1001
  runAsGroup: 2001

networkPolicy:
  enabled: false

开始创建

helm install -name kubernetes-dashboard --namespace kube-system -f dashboard.yaml .

在这里插入图片描述
给kubernetes-dashboard绑定一个物理端口

kubectl edit svc kubernetes-dashboard -n kube-system

将type改为NodePort
在这里插入图片描述
在这里插入图片描述
在浏览器中访问,https://192.168.75.10:31777/#/login
在这里插入图片描述
使用token的方式进行登录
查询token命令

kubectl get secrets -n kube-system | grep kubernetes-dashboard-token

kubectl describe secrets kubernetes-dashboard-token-qglzz -n kube-system

在这里插入图片描述
将token复制到表单里
在这里插入图片描述
点击上面的+号可以新建部署,容器镜像填下Harbor仓库的镜像地址
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
云原生Kubernetes全栈架构师实战下载是指提供一个具有云原生架构设计和Kubernetes技术实践的全栈架构师学习材料的下载资源。 Kubernetes作为一个开源的容器编排引擎,在云原生架构中扮演着重要的角色。全栈架构师需要了解Kubernetes的核心概念、架构原理以及其在实践中的应用。 该资源的下载内容主要包括以下方面: 1. 云原生架构设计:介绍云原生架构的核心思想、原则和设计模式,帮助全栈架构师理解如何构建弹性、灵活和可扩展的应用架构。 2. Kubernetes基础知识:详细介绍Kubernetes的核心组件、架构、工作原理和常用功能,包括Pod、Deployment、Service等概念的讲解和实践。 3. Kubernetes部署和管理:指导全栈架构师在实践中如何部署和管理Kubernetes集群,包括安装配置、网络设置、存储管理等内容。 4. 云原生应用开发:介绍云原生应用的开发模式和最佳实践,帮助全栈架构师了解如何使用Kubernetes进行应用的容器化并进行弹性伸缩和自动部署等操作。 5. 持续集成和持续交付:介绍使用Kubernetes进行持续集成和持续交付的方法和工具,帮助全栈架构师实现应用的自动化构建、测试和部署。 通过下载并学习这个资源,全栈架构师可以进一步提升对云原生架构Kubernetes的理解和实践能力,为企业的应用容器化和云原生转型提供支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值