0%

YAPI搭建

概述

YApi 是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台

准备工作

1、准备Yapi镜像

2、准备Mongo镜像

3、创建NFS共享文件

这些准备工作,都在我的博客中有写道,有疑问可以去找一下 http://blog.appydm.com

阅读全文 »

CoreDNS简介

CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。

如果想要在分布式系统实现服务发现的功能,CoreDNS 其实是一个非常好的选择,CoreDNS作为一个已经进入CNCF并且在Kubernetes中作为DNS服务使用的应用,其本身的稳定性和可用性已经得到了证明,同时它基于插件实现的方式非常轻量并且易于使用,插件链的使用也使得第三方插件的定义变得非常的方便。

Coredns 架构

整个 CoreDNS 服务都建立在一个使用 Go 编写的 HTTP/2 Web 服务器 Caddy 。

Coredns 项目下载

下载地址1:

wget https://github.com/coredns/deployment/archive/master.zip
unzip master.zip

下载地址2:
git clone https://github.com/coredns/deployment.git

阅读全文 »

K8S搭建Zookeeper集群

服务器资源

服务器地址 k8s NFS
172.24.2.67 k8s-node-3 service
172.24.2.69 k8s-master client
172.24.2.70 k8s-node-2 client
172.24.2.71 k8s-node-1 client

安装NFS

1、在67服务器中安装NFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#master节点安装nfs
yum -y install nfs-utils

#创建nfs目录
mkdir -p /nfs/data/

#修改权限
chmod -R 777 /nfs/data

#编辑export文件,这个文件就是nfs默认的配置文件
vi /etc/exports
/nfs/data *(rw,no_root_squash,sync)

#配置生效
exportfs -r
#查看生效
exportfs

#启动rpcbind、nfs服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs

#查看 RPC 服务的注册状况
rpcinfo -p localhost

#showmount测试
showmount -e 172.24.2.67

1561700173921

2、所有node节点安装客户端,开机启动

1
2
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs
阅读全文 »

安装Kubernetes-dashboard

概述

Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI。它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身。

创建

创建Dashboard的yaml文件,并设置端口为30001,拉取镜像文件地址

1
2
3
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml
sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml

证书

生成自签证书

1)生成证书请求的key

openssl genrsa -out dashboard.key 2048

2)生成证书请求

1
openssl req -days 3650 -new -out dashboard.csr -key dashboard.key -subj '/CN=**172.24.2.69**'

3)生成自签证书

openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt

以上都是在服务器上执行

阅读全文 »

K8S安装

Kubernetes支持在物理服务器或虚拟机中运行,本次使用虚拟机准备测试环境,硬件配置信息如表所示

IP地址 节点角色 Hostname
172.24.2.69 master k8s-master
172.24.2.71 worker k8s-node-1
172.24.2.70 worker k8s-node-2

环境准备

1、设置主机名hostname,管理节点设置主机名为 k8s-master 。

1
hostnamectl set-hostname k8s-master

2、关闭防火墙、selinux和swap

1
2
3
4
5
6
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

3、配置内核参数,将桥接的IPv4流量传递到iptables的链

1
2
3
4
5
6
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system
阅读全文 »

Spring OAuth2.0 提供者实现原理

Spring OAuth2.0提供者实际上分为

  • 授权服务 Authorization Service.
  • 资源服务 Resource Service.

虽然这两个提供者有时候可能存在同一个应用程序中,但在Spring Security OAuth中你可以把他它们各自放在不同的应用上,而且你可以有多个资源服务,它们共享同一个中央授权服务。

配置一个授权服务必须要实现的endpoints:

  • AuthorizationEndpoint:用来作为请求者获得授权的服务,默认的URL是/oauth/authorize.
  • TokenEndpoint:用来作为请求者获得令牌(Token)的服务,默认的URL是/oauth/token.

配置一个资源服务必须要实现的过滤器:

  • OAuth2AuthenticationProcessingFilter:用来作为认证令牌(Token)的一个处理流程过滤器。只有当过滤器通过之后,请求者才能获得受保护的资源
阅读全文 »

最近公司项目使用了Spring Security,下面整理一下基础知识

概述

一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对访问权限进行控制嘛),应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。  

spring security的主要核心功能为 认证和授权,所有的架构也是基于这两个核心功能去实现的。

阅读全文 »

前言

经过前段时间对SSO单点登录的研究发现,有以下几类方案可以实现

  1. Spring Session + Redis
  2. Spring Security + JWT
  3. Spring Security + OAuth2 + Redis

本文章将讲述Spring Security + OAuth2 + Redis,其他方式不做更多说明,直接上干货,下面是大概的流程。

阅读全文 »

Nexus搭建Docker私库

Nexus是用于Maven私服的,不过在官网上发现最新的Nexus 3.x还支持Docker仓库了,所以使用docker来搭建一下Nexus

前面安装docker,docker-compose就不说了,直接来文件

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
nexus:
image: registry.cn-shenzhen.aliyuncs.com/zhouqi/nexus:3.0
restart: always
ports:
- 8081:8081
- 5000:5000
volumes:
- ~/docker/nexus/nexus-data:/nexus-data:Z
container_name:
nexus

注意:端口5000,是为了让docker能登录的端口地址和nexus上要设置一样

阅读全文 »

携程 Apollo 配置中心

在Spring Boot 2.0 整合携程Apollo配置中心一文中,我们在本地快速部署试用了Apollo。本文将介绍如何按照分布式部署(采用Docker部署)的方式编译、打包、部署Apollo配置中心,从而可以在开发、测试、生产等环境分别部署运行。

部署准备

  • docker 安装
  • docker-compose 安装
  • mysql 安装

Apollo工程

| 工程名 | 优先级 | 说明 | 端口 | sql |
|————————-|
| apollo-configservice | 1 | 服务 | 8090 | apolloconfigdb.sql |
| apollo-adminservice | 2 | 管理 | 8091 | apolloconfigdb.sql |
| apollo-portal | 3 | 界面 | 8092 | apolloportaldb.sql |

阅读全文 »