概述
容器是一种软件包,它将代码和相关要求(如系统库、系统工具、默认设置、运行时等)捆绑在一起,以确保应用程序在计算环境中成功运行。从 Cisco Secure Firewall ASA 版本 9.22 开始,您可以在开源 Kubernetes 环境中部署 ASAc。在此解决方案中,ASAc 与容器网络接口 (CNI) 集成,并作为基础设施即代码 (IaC) 解决方案进行部署。与 CNI 的集成提高了网络基础设施部署的灵活性。
此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科可能会在某些地方提供本内容的当地语言翻译版本。请注意,翻译版本仅供参考,如有任何不一致之处,以本内容的英文版本为准。
您可以在任何云平台上运行的开源 Kubernetes 环境中部署 ASA 容器 (ASAc)。
容器是一种软件包,它将代码和相关要求(如系统库、系统工具、默认设置、运行时等)捆绑在一起,以确保应用程序在计算环境中成功运行。从 Cisco Secure Firewall ASA 版本 9.22 开始,您可以在开源 Kubernetes 环境中部署 ASAc。在此解决方案中,ASAc 与容器网络接口 (CNI) 集成,并作为基础设施即代码 (IaC) 解决方案进行部署。与 CNI 的集成提高了网络基础设施部署的灵活性。
ASA 容器解决方案仅在开源 Kubernetes 和 Docker 环境中进行验证。
其他 Kubernetes 框架,如 EKS、GKE、AKS、OpenShift 等,尚未通过验证。
以下功能未经验证:
升级
高可用性
集群
IPv6
透明模式
使用以下许可证之一在 Kubernetes 上部署 ASA 容器:
ASAc5 - 1 个 vCPU、2 GB 内存和 100 Mbps 速率限制
ASAc10 - 1 个 vCPU、2 GB 内存和 1 Gbps 速率限制
操作系统
Ubuntu 20.04.6
Kubernetes 版本 v1.26
Helm 版本 v3.13.1
Kubernetes 集群节点 - 主设备和工作节点
Kubernetes CNI
POD 管理 CNI - Calico
ASAc 网络 CNI - Multus macvlan
以 yaml 文件形式提供的 Helm 图表用于设置基础设施即代码 (IaC)
在此拓扑示例中,ASA 容器 (ASAc) Pod 有三个虚拟网络接口 - net1、net2 和 net3,它们会连接到以下工作节点接口 - ens192、ens224 和 ens256。工作节点接口映射到 ASAc mgmt、data1 和 data2 网络。接口 ens160 是节点管理接口。接口 eth0 派生自 Calico CNI。接口 net1、net2 和 net3 派生自 multi-macvlan CNI。
确保在主节点和工作节点上安装了 Ubuntu 20.04.6 LTS。
在工作节点上为 ASA 容器 (ASAc) 操作分配三个虚拟接口。
设置工作节点的管理接口,以用于对工作节点进行 ssh 访问。
在工作节点上启用 Hugepage。
将 Calico CNI 设置为 POD 管理。
使用要用于管理 ASAc 接口的 MACvlan CNI 设置 Multus。
有关这些前提条件中提到的常规 Kubernetes 操作的详细信息,请参阅 Kubernetes 文档。
执行以下步骤在 Kubernetes 环境中部署 ASA 容器 (ASAc)。
步骤 1 |
设置前提条件中提到的要求。 |
||||||||||||
步骤 2 |
运行 kubectl get nodes 、 kubectl get pods 和 kubectl get all 命令,以便分别显示所有节点、Pod 和所有资源的状态。确保 Kubernetes Pod 和节点处于就绪状态。
![]() ![]() ![]() |
||||||||||||
步骤 3 |
运行 route -n 命令以验证网络接口配置。在本例中,ens160 是节点的管理接口。节点 ens192、ens224 和 ens256 会别映射到 ASAc 接口。 ![]() |
||||||||||||
步骤 4 |
运行以下给出的 cat 命令以验证 hugepage 配置。 ![]() |
||||||||||||
步骤 5 |
将包含 ASA 容器映像的 ASA Docker tar 捆绑包从 software.cisco.com 下载到本地 Docker 注册表。 |
||||||||||||
步骤 6 |
将下载的 ASA 容器镜像加载到本地 Docker 注册表中。 |
||||||||||||
步骤 7 |
从 ASAc GitHub 存储库中的 helm 文件夹下载模板和其他文件。 |
||||||||||||
步骤 8 |
在 values.yaml 文件中输入所需的参数值。
values.yaml 文件中的参数名称和参数说明如下。
|
||||||||||||
步骤 9 |
验证 day0-config 文件中的默认参数值。您也可以根据需要更新这些值。 |
||||||||||||
步骤 10 |
运行 helm install 命令以部署 helm 图表,并在 Kubernetes 框架中部署 ASAc。
|
||||||||||||
步骤 11 |
运行 helm list -all 命令以列出已部署的资源,并检查 ASAc 部署的状态。
|
通过检查 hem 图表、ASAc Pod 的状态和 Pod 事件,验证 ASA 容器 (ASAc) 部署是否成功。
ubuntu@k8s-master:~$ helm status test-asac
NAME: test-asac
LAST DEPLOYED: Sun Jan 21 07:41:03 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
ubuntu@k8s-master:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
asac-5d8c4d547f-6k479 1/1 Running 0 43m
ubuntu@k8s-master:~$ kubectl events asac-5d8c4d547f-6k479
LAST SEEN TYPE REASON OBJECT MESSAGE
52m Normal SuccessfulCreate ReplicaSet/asac-5d8c4d547f Created pod: asac-5d8c4d547f-6k479
52m Normal ScalingReplicaSet Deployment/asac Scaled up replica set asac-5d8c4d547f to 1
52m Normal WaitForFirstConsumer PersistentVolumeClaim/local-pvc waiting for first consumer to be created before binding
51m Normal Scheduled Pod/asac-5d8c4d547f-6k479 Successfully assigned default/asac-5d8c4d547f-6k479 to k8s-worker
51m Normal AddedInterface Pod/asac-5d8c4d547f-6k479 Add eth0 [10.244.254.160/32] from k8s-pod-network
51m Normal AddedInterface Pod/asac-5d8c4d547f-6k479 Add net1 [] from default/macvlan-mgmt-bridge
51m Normal AddedInterface Pod/asac-5d8c4d547f-6k479 Add net2 [] from default/macvlan-in-bridge
51m Normal AddedInterface Pod/asac-5d8c4d547f-6k479 Add net3 [] from default/macvlan-out-bridge
51m Normal Pulling Pod/asac-5d8c4d547f-6k479 Pulling image "dockerhub.cisco.com/asac-dev-docker/asac:9.22.x.x"
50m Normal Pulled Pod/asac-5d8c4d547f-6k479 Successfully pulled image "dockerhub.cisco.com/asac-dev-docker/asac:9.22.x.x" in 1m10.641397525s (1m10.641428591s including waiting)
50m Normal Created Pod/asac-5d8c4d547f-6k479 Created container asac
50m Normal Started Pod/asac-5d8c4d547f-6k479 Started container asac
检查 Pod 日志和容器日志,排除可能出现的任何问题。
ubuntu@k8s-master:~$ kubectl describe pod asac-5d8c4d547f-6k479
ubuntu@k8s-master:~$ kubectl logs asac-5d8c4d547f-6k479
运行 kubectl attach 命令以访问 ASA 容器 (ASAc) Pod 的 CLI 并获取所需的输出。在本示例中,我们访问 ASAc Pod 的 CLI 并运行 show version 命令。
![]() 注 |
您也可以使用 ASDM 来访问 Kubernetes 环境中的 ASAc。 |
ubuntu@k8s-master:~$ kubectl attach -it asac-5d8c4d547f-6k479
If you don't see a command prompt, try pressing enter.
ciscoasa> show version
Cisco Adaptive Security Appliance Software Version 9.22
SSP Operating System Version 82.16(0.179i)
Device Manager Version 7.20
Compiled on Thu 02-Nov-23 13:30 GMT by builders
System image file is "Unknown, monitor mode tftp booted image"
Config file at boot was "startup-config"
ciscoasa up 55 mins 53 secs
Start-up time 12 secs
Hardware: ASAc, 2048 MB RAM, CPU Xeon E5 series 2100 MHz, 1 CPU (1 core)
BIOS Flash Firmware Hub @ 0x0, 0KB
0: Ext: Management0/0 : address is ae15.c291.86b1, irq 0
1: Ext: GigabitEthernet0/0 : address is faff.65b8.73a9, irq 0
2: Ext: GigabitEthernet0/1 : address is be89.078a.a560, irq 0
3: Int: Internal-Data0/0 : address is 0000.0100.0001, irq 0