Ubuntu 20.04上搭建vpn服务器
OpenVPNOpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。
OpenVPN服务端
更新系统包
1root@ubuntu:~# sudo apt update && apt upgrade
查看主机网卡和公网IP
查看主机网卡
1234567891011121314151617181920root@ubuntu:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo ...
Abp vNext源码分析-多租户模块
多租户抽象租户对象
ICurrentTenant : 当前租户
ICurrentTenantAccessor : 当前租户访问器
BasicTenantInfo : 租户实际对象
租户存储ITenantStore是多租户抽象数据源,可以实现ITenantStore,存储租户数据源
ITenantStore : 多租户存储
存储接口
12345678910public interface ITenantStore{ Task<TenantConfiguration> FindAsync(string name); Task<TenantConfiguration> FindAsync(Guid id); TenantConfiguration Find(string name); TenantConfiguration Find(Guid id);}
配置数据存储默认从配置文件中读取信息作为多租户存储
DefaultTenantStore : 从配置文件中读取多租户信息
配置对应选项类
1234567 ...
Abp vNext源码分析-功能模块和权限模块
功能模块功能管理-FeatureManagement是在多租户应用程序中使用,检查定义的功能是否对当前租户有效,功能是否启用。Abp系统功能定义,类似于权限功能一种延伸。
FeatureDefinition : 功能定义
FeatureGroupDefinition : 功能组定义
FeatureValue : 功能值,记录功能是否可用
IFeatureValueProvider : 功能值提供器,负责检查功能是否可用。
一般会结合功能存储IFeatureStore使用
12345678910111213public abstract class FeatureValueProvider : IFeatureValueProvider, ITransientDependency{ public abstract string Name { get; } protected IFeatureStore FeatureStore { get; } protected FeatureValueProvider(I ...
Kubernetes基础概念
概述官方中文文档
简介
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。
Kubernetes组成
Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。
每个节点上都要运行容器(Docker)。容器来负责所有具体的映像下载和容器运行。
Kubernetes主要由以下几个核心组件组成:
etcd 保存了整个集群的状态
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和 ...
k8s和k3s常用命令笔记
kubectlkubectl doc
常用命令
创建命令
+create
apply
run
set
操作命令
get
edit
delete
查看命令
describe
exec
logs
可选参数
-n --namespaces 不加命名空间默认default命名空间
使用命令示例资源操作其他资源deployment、service、job等与pod操作一样
创建pod
默认是创建pod,其他资源可以增加相应名称,job、deployment、service 等
kubectl create -f {filename}
示例
kubectl create -f ./pod.json
创建pod并启动指定容器
kubectl run {pod-name} --image={image-name}
示例
kubectl run nginx --image=nginx
声明式创建pod
kubectl apply (-f {filename} | -k {direct ...
Rancher搭建Kubernetes集群环境
RancherRancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。
部署Rancher Server前置准备
3台CentOS虚拟机
Master 1台
Node 2台
为每台虚拟机安装Docker环境
安装Rancher 2.x注意:端口绑定8080和8443,ingress-nginx controller需要占用80和443端口
1docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 rancher/rancher
登录 Rancher 界面并配置初始设置稍等一会,登录 Rancher,然后再开始使用 Rancher。登录以后,您需要完成一些一次性的配置。
打开浏览器,输入主机的IP地址:https://<SERVER_IP>
首次登陆需要设置密码
设置Rancher Server Url ...
ReSharper快捷键
完整的快捷键列表代码分析(Code analysis)
Command
Shortcut(Visual Studio)
Shortcut(IntelliJ IDEA/ReSharper 2.x)
Toggle code analysis in the current file
Ctrl+Shift+Alt+8
Ctrl+Shift+Alt+8
Go to next code issue (error, warning or suggestion)
Alt+PgDn
F12
Go to previous code issue (error, warning or suggestion)
Alt+PgUp
Shift+F12
Go to next error
Shift+Alt+PgDn
Alt+F12
Go to next error in solution
Shift+Alt+PgDn
Alt+F12
Go to previous error
Shift+Alt+PgUp
Shift+Alt+F12
Go to previous error ...
Docker中应用s6-overlay
背景在最开始使用Docker容器的时候,一直把Docker当作一个Linux虚拟机,后来用久了发现Docker只会起来一个特殊的进程Pid=1,Dockerfile里有两个关键字可以指定指令,ENTRYPOINT 和 CMD。当主进程退出的时候容器所拥有的PID命名空间就会被销毁,容器生命周期也会结束。但是有时候需要在Docker容器中运行多个进程,基本做法用shell或者第三方守护进程(dumb-init、tini、Monit、Supervisor、skaware、s6-overlay、runit、Systemd)作为主进程运行其他程序。
S6介绍
s6程序s6 是skarnet(Laurent Bercot) 开发的一款轻量级守护进程套件
s6-overlays6-overlay 是容器内部初始化s6的工具包,我在搜索基础镜像的时候在github上发现,看到readme描述我就被吸引了。
文档s6在Linux程序中应用的文章《s6-svscan作为初始进程如何运作》文档
S6使用这里主要介绍s6-overlay使用
s6-overlay生命周期:
step1:容 ...
Docker私有仓库Harbor搭建
背景因为搭建k8s集群需要一个私有docker镜像仓库,可以在k8s集群内部搭建Harbor,也可以单独搭建。考虑到单独搭建稳定性会高一点,所以就在虚拟机上单独搭建。
HarBor 安装与配置虚拟机配置
资源
大小
CPU
2 Core
内存
1 G
磁盘
40 G
环境
CentOS 7.4
Docker 19.03.8
Docker-Compose
openssl
python
安装Docker和Docker-Compose安装就不赘述了
下载HarborHarbor 2.0.0-下载地址
1[root@k8s-docker-register ~]# curl -OL https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz
这里选择下载离线安装包,下载完成后解压
1[root@k8s-docker-register ~]# tar -zxf harbor-offline-installer-v2.0.0.tgz
配置Ha ...
Hyper-v搭建KoolShare路由器给k8s集群代理
背景k8s需要用到科学上网,以前的做法是在宿主机搭建一个代理,虚拟机通过代理上网,如果新增一个虚拟机就要配置,相对比较麻烦。更好的是k8s集群一个网络,通过一个路由器代理实现科学上网,新增虚拟机只需要加入这个网络即可。
实现方式Hyper-v和LEDE固件(KoolShare改版)
本身k8s集群就是搭建在windows上,而且Hyper-v相对VMware比较轻量,操作也便捷。
实现原理路由器路由器网线插口分两种,一种是WAN口一般只有一个,一种是LAN口有若干个。WAN口用来接入网络,一般连接网络猫或者交换机,LAN口用来设备接入,连接电脑或者服务器。
LEDELinux嵌入式开发环境项目(Linux Embedded Development Environment,LEDE),是路由器固件项目OpenWRT的一个复刻分支项目,并继承原来OpenWRT的开发目标。2018年1月 LEDE 和 OpenWRT 正式宣布合并,合并后的项目使用 OpenWrt的名字。
实现原理就是在电脑里装一个LEDE虚拟机,分配一张网卡作为WAN口连接外部网络,LAN口开放给宿主机和其他虚拟机。这样 ...