Hujin Blog

Stay hungry Stay foolish

Kuryr CNI

cni

背景 当k8s部署在openstack节点或者虚拟机中时,可以使用openstack提供的网络功能实现k8s cni,这里主要对接的是neutron和lbaas模块,社区提供了kuryr的实现方案。 Kuryr 是 OpenStack Neutron 的子项目,其主要目标是透过该项目来集成 OpenStack 与 Kubernetes 的网络。该项目在 Kubernetes 中实作了原生 ...

GO MOD使用私有仓库

go mod gerrit

背景 在常见的项目中使用go mod做包管理,在引用第三方包时这个包可能维护在内部私有仓库中,需要解决几个问题: 引用第三方库 引用私有仓库时不使用代理 使用git方式获取代码 替换引用的仓库地址 这里直接修改代码中的引用工作量太大了,可以通过在go.mod中添加replace的方式: github.com/gophercloud/gophercloud =&g...

Cinder CSI

背景 由于openstack cinder提供丰富的后端存储服务,当k8s部署在openstack的虚拟机中时,使用cinder 的csi提供存储服务可以非常方便对接不同的后端存储 要求 分别部署openstack和k8s集群 openstack cinder使用v3 api openstack nova和cinder在keystone中的endpoint url对应的ip地...

Golang Debug -- gdb

获取源码并编译 1 2 3 4 5 git clone https://github.com/coredns/coredns.git cd coredns go build -gcflags "-N -l" coredns.go yum install -y gdb debug 1 2 3 gdb coredns b coredns.go:11 run 参考 https...

TungstenFabric Kubernetes Annotation

annotation

Annotation整理 名称 值 说明 opencontrail.org/fip-pool ”{‘domain’: ‘default-domain’, ‘project’: ‘ArcherAdmin’, ‘network’: ‘public1420’, ‘name’: ‘floa...

CoreDNS

架构 搭建 正常使用kubeadm等工具部署的集群中默认都已经部署有coredns,以下为手动部署的流程: 创建一个serviceaccount用来做鉴权用 创建clusterrole对象system:coredns 绑定serviceaccount和clusterrole 创建coredns的配置configmap,在后面创建deployment时引用。这里需要注意...

Kuberntes Webhook -- Keystone

背景 k8s本身不提供用户和项目管理功能,需要依赖第三方组件来实现。 由于k8s和openstack的融合需求,需要提供一种统一的用户鉴权机制,本次重点介绍k8s如何使用keystone进行鉴权。通过调用keystone获取token,并使用这个token调用k8s的接口获取资源信息。 架构图 主要流程: 客户端通过rest api调用openstack keystone获取t...

Kuberntes OIDC -- Keycloak

架构图 OIDC是一种 OAuth2 认证方式, 被某些 OAuth2 提供者支持,例如 Azure 活动目录、Salesforce 和 Google。 协议对 OAuth2 的主要扩充体现在有一个附加字段会和访问令牌一起返回, 这一字段称作 ID Token(ID 令牌)。 ID 令牌是一种由服务器签名的 JSON Web 令牌(JWT) 登录到你的身份服务(Identity ...