golang

使用golang和bluge打造自己的全文搜索引擎

464

全文搜索引擎有许多,其中最出名的是elasticsearch, 无论是性能还是体验都是最顶尖的,但是对小应用来不友好,因为小应用的硬件资源比较少,所以能够通过库/模块的方式内置在应用中会是比较好的选择,就像sqlite3一样。

casbin权限模型推演

353

无论什么项目只要涉及到多个用户的操作都会开始考虑权限控制, 权限管理是一个很常见部分,所以出现了单独处理这个部分的开源项目,即本文要介绍的casbin项目。

casbin支持很多的编程语言, 本文选择golang作为使用语言。

一文搞定SSL证书的所有创建问题

600

创建SSL证书是一个很无聊的过程, 偏偏有时候它又很重要, 但是无聊的事情实在让人乏味, 以后一定会忘记, 那就写一篇比较完全的文章来说明SSL证书创建问题留作以后复制粘贴吧。

虽然TLS跟SSL不是同一个东西, 但是就当下的语境而言, 两者基本没有什么区别。

CoreDNS源代码粗解

499

本文通过阅读CoreDNS的源代码来了解CoreDNS的内部机制, 通过对源代码的阅读可以让我们更好的理解并使用CoreDNS,之所以被称为粗解,是因为阅读的程度并没有太深,忽略了一些细节。

ingress-nginx 保姆级别源码阅读

820

ingress-nginx用于将集群内部的服务暴露给外部调用, 鉴于nginx的出色表现,所以nginx-ingress也是一个高性能的网关, 通过阅读ingress-nginx-controller的源代码可以更好的理解并使用ingress-nginx, 在理解源代码之后也可以更容易的扩展ingress-nginx.

在k8s集群内部,或者说在集群的任一节点上执行命令,访问任何资源都是没什么障碍的,但是,在集群外部呢?我们并不能直接访问pod的IP,或者service的IP,这些IP是一些内部地址,一般在外部是不会设置路由的,那么如何在集群外部访问这些资源呢?最简单的解决方式是hostPort及nodePort,通过hostPort可以在运行pod的节点监听指定接口,好处是没有端口限制,但是外部访问需要知道pod运行在哪个节点,可能会存在单点故障(当然了,你也可以每个节点都运行hostport,但是太浪费端口了),如果只有一个pod运行的话,相对于hostPort, nodePort可以在所有节点监听一个指定的端口,这样访问集群的任一节点都可以访问到所需资源,好处是不需要关心pod运行在哪个节点,但是有端口限制。除了这些限制以外,最痛苦的是每个接口一个端口,或者说一个域名一个端口,如果有一个统一的端口并且可以动态的关联配置的服务该多好。

kube-proxy保姆级别源码阅读

651

kube-proxy在kubernetes中扮演的角色是主机间网络流量的协同者, kube-proxy通过实时监听网络变化来管理转发和路由, 但是根据所选的cni不通以及网络类型的选择(iptables, ipvs)不同会有不同的效果

Kubernetes源码阅读大纲

1226

保姆级别的源码阅读,死扣各个细节和代码。

代码版本: release-1.22(b68064208b29e5956cdff79a94831b52dc50d89a)

本系列主要围绕k8s的各个部分的源码来阅读。适合深入k8s内部原理的童鞋阅读,暂时没有介绍基础概念及使用的打算。

一天用Go快速搭建一个运维管理后台

691

只要运维成了一定的规模就一定需要一个平台来集成自己的工具链以及自己的管理方法,将自己的经验全部抽离出来变成一个个接口,方便自己也方便他人,可以更便捷的管理自己的工作,管理的东西有很多,比如资产管理(或者说CMDB), 比如运维自动化平台的封装,比如监控,比如日志平台,如果我们做了一个完整的平台往回看,会发现很多东西是比较通用的,并且在编写代码的过程中发现很多没有意思的事情,那就是数据的增删改查,用户权限管理等,这些自然是可以从头写的,但是,也许没多大必要,因为这些东西写起来实在是让人无聊和乏味。那么怎么办呢?如何将这些无聊的工作抽离出来让其他工具或框架完成?答案我想有很多,这篇文章写的一个答案是Gin-Vue-Admin

穷人的分布式网络

297

前言: 穷人指没钱或者不愿花太多钱(我既属于前者也属于后者T_T),分布式网络主要指主机网络环境分布在不同的地理环境比如不同省或者不同国家(谁还没有一个比较便宜的国外vps不是~_~)