《istio-in-action 系列》 3. 使用 istio Gateway 允许外部访问

isti VirtualService 和 k8s Ingress 可以简单的认为 Ingress 是 k8s 中提出的流量入口转发的一个 标准定义规范(只是认为)。 怎么实现, 需要根据不同的 IngressController 的逻辑。 VirtualService 的部分功能就承担了 Ingress 的这一功能。 1. Ingress 与 VirtualService 的定义 k8s Ingress 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: creationTimestamp: null name: simple spec: rules: - host: foo.com # 访问的域名 http: paths: - backend: service: name: svc1 # 后端服务名称 port: number: 80……

阅读全文

《istio-in-action 系列》 4. 使用 istio Gateway 允许外部访问

使用 istio Gateway 允许外部访问 仅仅是简单的创建了 VirtualService 是不能实现集群外部的访问的。 在 Istio 中, 还有一个 Gateway 的概念。 顾名思义, Gateway 就是大门保安, 只允许具有特定特征的流量通过。 1.1. 创建 Gateway 先来创建一个 Gateway 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 --- # https://istio.io/latest/docs/reference/config/networking/gateway/ apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-tangx-in namespace: myistio spec: selector: istio: ingressgateway # 选择 ingressgateway, 省略则兼容所有 servers: - port: number: 80 name: http protocol:……

阅读全文

《istio-in-action 系列》 5. VirtualService 使用路径重写

《istio-in-action 系列》 5. VirtualService 使用路径重写 有了 VirtualService 的路径重写功能后, 就更符合 Ingress 的标准定义了。 但 VirtualService 不仅仅如此, 路径重写包含了三种方式 prefix: 前缀匹配。 只要 uri 路径的 前段 匹配则转发。 后端 自动补齐。 exact: 精确匹配。 只有 uri 全部 匹配才转发, 并且只能转发某一个固定地址。 精确匹配 regex: 正则匹配。 只有……

阅读全文

《istio-in-action 系列》 6. 使用 DestinationRule Subset 进行路由分组(版本控制)

使用 DestinationRule Subset 进行路由分组(版本控制) 当一个程序并行发布多个版本的时候, 如 prod-v1 / prod-v2 1 2 3 4 5 kgd NAME READY UP-TO-DATE AVAILABLE AGE toolbox 1/1 1 1 3d22h prod-v1 1/1 1 1 16m prod-v2 1/1 1 1 16m // 两个版本的测试结果, 仅定义为 version 不一致 { "data": { "Name": "istio in action", "Price": 300, "Reviews": null }, "version": "v2.0.0" // "version": "v1.0.0" } k8s Service 依旧实现最根本的 服务级别的 Selector。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16……

阅读全文

《istio-in-action 系列》 8. VirtualService 使用 header 重写路由

VirtualService 使用 header 重写路由 在 istio 中, 除了 path 之外还可以使用 Header 进行路由规则管理。 为了更好的展示 header 路由效果, 这里配合使用了 uri 的精确匹配模式。 实现之后, 只能访问地址 http://istio.tangx.in/ , 其他均为 404。 具体哪个服务应答, 完全根据 header 匹配选择。 效果如下: 使用 Header 匹配有几个必要条件 Header 的 key 只能包含 小写字母 和 连字符 -。 从实际测试……

阅读全文

gorm 数据库表模型声明 - 基础

gorm 数据库表模型声明 - 基础 链接数据库 1 2 3 4 5 6 7 8 9 10 import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) func main() { // refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) } 常用字段类型与 gorm 默认字段类型 varchar, int, datetime, timestamp 表定义如下 1 2 3 4 5 type Author struct { gorm.Model Name string Password string } auto migrate 后, 可以看到 name, password 默认使用的是 longtext 类型。 1 2 3 4 5 6 7 8 9 10 11 12 show create table authors; CREATE TABLE `authors` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `created_at` datetime(3) DEFAULT NULL, `updated_at` datetime(3) DEFAULT……

阅读全文

golang deepcopy 的两种实现方式

Golang 实现深拷贝(DeepCopy)的两种方式 如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。 状态: 未更新 原文链接: https://typonotes.com/posts/2021/12/14/golang-struct-interface-deepcopy/ golang deepcopy 的两种实现方式 最近在基于 gin 封装 rum-gonic - github web 框架的过程中,遇到了一个问题。 在注册路由的时候传递是 指针对象, 因此造成所有的 request 请求使用相同的 CreateUser 对象, 出现并发……

阅读全文

Mysql 外键

Mysql 外键 如果说 mysql 中的 left/right/out join 查询 软链接 关系, 只是通过看似有关系的字段把两张表聚合在一起。 那么 foreign key 就是 硬连接 , 实实在在把两张表聚合在一起。 如果数据的字段的值 不符合 所连接表, 将不允许输入 插入或修改 数据。 创建外键 准备环境 1 2 3 4 5 6 7 create database day123 default charset utf8 collate utf8_general_ci; use day123; create table depart( id int not null primary key auto_increment, name varchar(32) not null ) default charset=utf8; 创建……

阅读全文

mysql 查询操作

mysql 查询操作 初始化环境 创建数据库, 1 2 3 4 -- create database create database day111 default charset utf8 collate utf8_general_ci; use day111; 创建用户表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -- create table user create table user ( id int not null primary key auto_increment, name varchar(6) not null, password varchar(32) not null, age int, salary int null default 0, depart_id int not null ) default charset=utf8; -- insert into `user` (name, `password`, age, salary,depart_id) values ("诸葛亮","zhuge123",3……

阅读全文

mysql table 操作

Mysql - table 操作 创建数据库 1 create database 数据库名 default charset utf8 collate utf8_general_ci; 查看所有表 1 show tables; 创建数据表 1 2 3 4 5 6 7 8 9 10 11 12 13 create table 表名( 列名 类型, 列名 类型 ) default charset=utf8; --- create table user ( id int not null auto_increment primary key, -- 不允许为空,主键, 自增 name varchar(16) not null, -- 不允许为空 email varchar(32) null, -- 允许为空, 长度为 32 age int default 3 -- 默认值 ) default charset=urf8; 注意 : 一张表只能 有且只有一个 自增列……

阅读全文

福利派送

  • (免费星球)「运维成长路线」

  • 又拍云免费 CDN

最近文章

分类

标签

其它