F5社区-F5技术交流中心

F5对接Rancher容器云平台部署手册v3

2020-06-23 17:23:28

晏顺

Copyright 2020, R ancher Labs (CN). All Rights Reserved.

 

版本

更改说明

更新人

日期

1.0

文档创建

李鸿宇

20200615

2.0

新增蓝绿发布

李鸿宇

20200616

3.0

新增部署架构图

李鸿宇

20200616

1RancherF5 BIGIP部署架构图

2、配置F5 BIGIP VE软件负载均衡

2.1 配置F5 BIGIP VE管理地址

2.2 查看F5 BIGIPlicense

2.3 配置F5 BIGIP对接Flannel网络的Vxlan相关配置

2.4 配置F5 BIGIP partition分区

3、在Kubernetes集群部署F5 CIS控制器

3.1 配置F5 BIGIP访问凭证

3.2 配置F5 BIGIP集群伪节点

3.3 配置F5 CSI控制器RBAC权限

3.4 部署F5 CIS控制器

4、配置工作负载的L4负载均衡

4.1 创建工作负载Deployment和服务发现Service

4.2 创建L4负载均衡的配置映射ConfigMap

4.3 验证L4负载均衡的配置结果

5、配置工作负载的L7负载均衡

5.1 创建工作负载Deployment和服务发现Service

5.2 创建L7负载均衡Ingress

5.3 验证L7负载均衡的配置结果

6、配置应用蓝绿发布

6.1 创建测试蓝绿发布的工作负载

6.2 创建测试应用的蓝绿发布策略

6.3 验证应用蓝绿发布的配置结果

1RancherF5 BIGIP部署架构图


2、配置F5 BIGIP VE软件负载均衡

2.1 配置F5 BIGIP VE管理地址

默认角色

默认用户名

默认密码

F5 BIGIP VE系统

root

default

F5 BIGIP VE UI

admin

admin

# 进入F5 tmos操作环境tmsh

# 关闭dhcp功能

modify sys global-settings mgmt-dhcp disabled # [可选项]默认的管理登陆端口为8443,此步骤可省略modify sys httpd ssl-port 8443

# 删除默认的管理IP

delete sys management-ip 192.168.1.245/24 # 创建管理IP为阿里云为F5分配的地址

create sys management-ip 172.17.206.198/20 # 创建F5所在网段的网关地址

create sys management-route default gateway 172.17.207.253


2.2 查看F5 BIGIPlicense

F5 BIGIP 13x版本以后,对Kubernetes Flanenl Cluster Mode支持的SDN license已经包含在了Local Traffic Manager, VE license里面了。但如果使用需要边界网关协议(BGP)的网络模式(例如Calico),则还必须使用包含Routing BundleBIG-IP system license

show sys license



 2.3 配置F5 BIGIP对接Flannel网络的Vxlan相关配置

# 修改允许各种协议和服务连接这个self-IP

modify net self interface01 allow-service all


# 配置vxlan profile

create net tunnels vxlan fl-vxlan port 8472 flooding-type none


# 配置vxlan VTEP

create net tunnels tunnel flannel_vxlan key 1 profile fl-vxlan local-address 172.17.206.198


# 配置F5Pod通信的接口地址。

create net self interface02 address 10.42.100.3/16 allow-service all vlan flannel_vxlan


# 保存F5配置信息

save sys config

# 查看vxlan VTEPMac地址,用于配置F5 BIGIP伪节点。

show net tunnels tunnel flannel_vxlan all-properties


2.4 配置F5 BIGIP partition分区

由于F5 CIS无法针对默认的commonpartition分区进行操作,所以需要提前创建partition分区。

# 创建名字为Rancherpartition分区

create auth partition Rancher

# [可选]删除名字为Rancherpartition分区delete auth partition Rancher


# 查看partiton分区列表

list auth partition



3、在Kubernetes集群部署F5 CIS控制器

3.1 配置F5 BIGIP访问凭证

F5 BIGIP登陆信息的用户名、密码和登陆地址,通过base64加密并设置成kubernetessecrets

echo -n 'admin' | base64

echo -n 'Rancher@123' | base64

tee > f5-bigip-secret.yml << EOF apiVersion: v1

kind: Secret metadata:

name: bigip-credentials namespace: kube-system

type: Opaque data:

username: YWRtaW4= password: UmFuY2hlckAxMjM=

EOF

kubectl apply -f f5-bigip-secret.yml

3.2 配置F5 BIGIP集群伪节点

F5 BIGIP设备配置成kubernetes集群Flannel网络里面的伪节点

tee > f5-kctlr-bigip-node.yaml << EOF apiVersion: v1

kind: Node metadata:

name: bigip annotations:

# Provide the MAC address of the BIG-IP VXLAN tunnel flannel.alpha.coreos.com/backend-data: '{"VtepMAC":"00:16:3e:10:1b:d2"}' flannel.alpha.coreos.com/backend-type: "vxlan" flannel.alpha.coreos.com/kube-subnet-manager: "true"

# Provide the IP address you assigned as the BIG-IP VTEP flannel.alpha.coreos.com/public-ip: 172.17.206.198

labels:

# f5伪节点设置如下标签,使Rancher忽略对此节点的错误显示。

cattle.rancher.io/node-status: ignore spec:

# Define the flannel subnet you want to assign to the BIG-IP device. # Be sure this subnet does not collide with any other Nodes' subnets. podCIDR: 10.42.100.0/24

EOF

kubectl apply -f f5-kctlr-bigip-node.yaml

kubectl get nodes


在Rancher UI看到的主机列表如下。


3.3 配置F5 CSI控制器RBAC权限

kubectl create serviceaccount bigip-ctlr -n kube-system

tee > f5-k8s-rbac.yaml << EOF kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1 metadata:

name: bigip-ctlr-clusterrole rules:

apiGroups: ["", "apps", "extensions"]

resources: ["nodes", "services", "endpoints", "namespaces", "ingresses", "secrets", "pods"]

verbs: ["get", "list", "watch"]

apiGroups: ["", "apps", "extensions"]

resources: ["configmaps", "events", "ingresses/status"] verbs: ["get", "list", "watch", "update", "create", "patch"]

 

---

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1 metadata:

name: bigip-ctlr-clusterrole-binding namespace: kube-system

roleRef:

apiGroup: rbac.authorization.k8s.io kind: ClusterRole

name: bigip-ctlr-clusterrole subjects:

kind: ServiceAccount name: bigip-ctlr namespace: kube-system

EOF

kubectl apply -f f5-k8s-rbac.yaml

3.1 部署F5 CIS控制器

vim k8s-bigip-ctlr-deployment.yaml apiVersion: apps/v1

kind: Deployment metadata:

name: k8s-bigip-ctlr namespace: kube-system

spec:

replicas: 1 selector:

matchLabels:

app: k8s-bigip-ctlr template:

metadata:

name: k8s-bigip-ctlr labels:

app: k8s-bigip-ctlr spec:

serviceAccountName: bigip-ctlr containers:

name: k8s-bigip-ctlr

# 由于F5 CIS控制器2.0采用AS3的命令声明模式,所以此次依然采用1.x版本控制器镜像。image: "f5networks/k8s-bigip-ctlr:1.14.0"

env:

name: BIGIP_USERNAME

valueFrom: secretKeyRef:

name: bigip-credentials key: username

name: BIGIP_PASSWORD

valueFrom: secretKeyRef:

name: bigip-credentials key: password

command: ["/app/bin/k8s-bigip-ctlr"] args:

"--bigip-username=$(BIGIP_USERNAME)"

"--bigip-password=$(BIGIP_PASSWORD)"

- "--bigip-url=https://172.17.206.198:8443"

"--bigip-partition=Rancher"

"--namespace=default"

"--pool-member-type=cluster"

"--log-level=INFO"

"--flannel-name=/Common/flannel_vxlan"

"--insecure=true"

kubectl apply -f k8s-bigip-ctlr-deployment.yaml

4、配置工作负载的L4负载均衡

4.1 创建工作负载Deployment和服务发现Service

通过Rancher UI创建nginx-l4工作负载,Pod副本数为5个。


通过Rancher UI查看nginx工作负载的服务发现service


4.2 创建L4负载均衡的配置映射ConfigMap

通过configmap为工作负载创建L4负载均衡

 

kind: ConfigMap apiVersion: v1 metadata:

name: f5-nginx-l4 namespace: default labels:

f5type: virtual-server data:

schema: "f5schemadb://bigip-virtual-server_v0.1.7.json" data: |

{

"virtualServer": { "backend": {

"servicePort": 80, "serviceName": "nginx-l4", "healthMonitors": [{ "interval": 30, "protocol": "http",

"send": "HEAD / HTTP/1.0\r\n\r\n", "timeout": 91

}]

},

"frontend": { "virtualAddress": {

"port": 8000,

"bindAddr": "172.17.206.198"

},

"partition": "Rancher", "balance": "round-robin", "mode": "tcp"

}

}

}

通过Rancher UI创建F5 L4的负载均衡的方法如下;



4.3 验证L4负载均衡的配置结果

F5 BIGIP管理界面上查看L4负载均衡配置的下发情况。



通过浏览器访问http://172.17.206.198:8000查看应用的访问情况


5、配置工作负载的L7负载均衡

5.1 创建工作负载Deployment和服务发现Service

通过Rancher UI创建nginx-l7工作负载,Pod副本数为5个。


通过Rancher UI查看nginx工作负载的服务发现service


5.2 创建L7负载均衡Ingress

通过ingress为工作负载创建L7负载均衡

apiVersion: extensions/v1beta1 kind: Ingress

metadata:

name: f5-nginx-l7 namespace: default annotations:

virtual-server.f5.com/partition: "Rancher" virtual-server.f5.com/ip: 172.17.206.198

virtual-server.f5.com/http-port: "80" virtual-server.f5.com/ssl-redirect: "false" virtual-server.f5.com/balance: "round-robin" virtual-server.f5.com/health: |

[

{

"path": "f5.rancher.com/",

"send": "HTTP GET /",

"interval": 5,

"timeout": 10

}

]

spec:

rules:

- host: f5.rancher.com http:

paths:

- path: / backend:

serviceName: nginx-l7 servicePort: 80

通过Rancher UI创建F5 L7的负载均衡的方法如下;




5.3 验证L7负载均衡的配置结果

F5 BIGIP管理界面上查看L7负载均衡配置的下发情况。


相比L4负载均衡,L7负载均衡增加了应用层策略的支持,可以灵活实现蓝绿、灰度等应用发布支持。



通过浏览器访问http://f5.rancher.com查看应用的访问情况


6、配置应用蓝绿发布

6.1 创建测试蓝绿发布的工作负载

创建一个内容为绿色的nginx工作负载,名字叫nginx-greenpod副本数为2,同时创建一个内容为蓝      色的nginx工作负载,名字叫nginx-bluepod副本数为2


查看nginx-greennginx-blue的服务发现service


 6.2 创建测试应用的蓝绿发布策略

通过ingress为工作负载创建应用蓝绿发布

apiVersion: extensions/v1beta1 kind: Ingress

metadata:

name: f5-green-blue namespace: default annotations:

virtual-server.f5.com/partition: "Rancher" virtual-server.f5.com/ip: 172.17.206.198

virtual-server.f5.com/http-port: "80" virtual-server.f5.com/ssl-redirect: "false" virtual-server.f5.com/balance: "round-robin" virtual-server.f5.com/health: |

[

{

"path": "green.rancher.com/", "send": "HTTP GET /",

"interval": 5,

"timeout": 10

},

{

"path": "blue.rancher.com/", "send": "HTTP GET /",

"interval": 5,

"timeout": 10

}

]

kubernetes.io/ingress.class: "f5" spec:

rules:

host: green.rancher.com http:

paths:

path: / backend:

serviceName: nginx-green servicePort: 80

host: blue.rancher.com http:

paths:

path: / backend:

serviceName: nginx-blue servicePort: 80

通过Rancher UI创建ingress转发策略。





 6.3 验证应用蓝绿发布的配置结果

在F5 BIGIP管理界面上查看应用蓝绿发布的运行和策略下发情况。



通过浏览器访问F5 BIGIP的地址http://172.17.206.198,同时使用chome modheader插件修改请求的header信息为host:blue.rancher.com,查看应用的访问情况。



 通过浏览器访问F5 BIGIP的地址http://172.17.206.198,同时使用chome modheader插件修改请求的header信息为host:green.rancher.com,查看应用的访问情况。







发布评论 加入社群

发布评论

相关文章

F5 Python SDK简介

Will Tang

2021-07-29 11:55:36 650

自动化的崛起:如何管理当今世界中的BOT

Vanessa.WANG?

2020-11-24 16:40:01 827

iRules 101-#02-if和表达式

CUNHUI

2020-11-09 18:40:29 2207

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1