kOps 中的堡垒机 ¶
堡垒机提供了一个面向外部的入口点,连接到包含私有网络实例的网络。此主机可以提供一个单点防御或审计,并且可以启动和停止以启用或禁用来自 Internet 的入站 SSH 通信,有些人将堡垒机称为“跳跃服务器”。
AWS ¶
启用/禁用堡垒机 ¶
要启用堡垒机实例组,用户需要在创建集群时设置 --bastion
标志
kops create cluster --topology private --networking $provider --bastion $NAME
要向现有集群添加堡垒机实例组,请使用 --role Bastion
标志创建一个新的实例组,并指定一个或多个子网(例如,utility-us-east-2a,utility-us-east-2b
)。
kops create instancegroup bastions --role Bastion --subnet $SUBNET
配置堡垒机实例组 ¶
您可以编辑堡垒机实例组以进行更改。默认情况下,堡垒机实例组的名称将为 bastions
,您可以使用 --name
指定集群的名称,如
kops edit ig bastions --name $KOPS_NAME
您现在应该能够编辑和配置您的堡垒机实例组。
apiVersion: kops.k8s.io/v1alpha2
kind: InstanceGroup
metadata:
name: bastions
spec:
associatePublicIp: true
image: ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20220404
machineType: t2.micro
maxSize: 1
minSize: 1
role: Bastion
subnets:
- utility-us-east-2a
注意:如果您要关闭堡垒机服务器,必须将实例组的 maxSize
和 minSize
字段设置为 0
。
如果您根本不想创建堡垒机实例组,只需从创建命令中删除 --bastion
标志。实例组永远不会创建。
使用公共 CNAME 访问您的堡垒机 ¶
默认情况下,堡垒机实例组将创建一个公共 CNAME 别名,它将指向堡垒机 ELB。
默认的堡垒机名称为 bastion.$NAME
,例如
bastion.mycluster.example.com
除非用户使用 --dns-zone
,它将固有地使用 bastion-$ZONE
语法。
您可以通过编辑主集群配置 kops edit cluster $NAME
并修改以下块来定义自定义堡垒机 CNAME
spec:
topology:
bastion:
bastionPublicName: bastion.mycluster.example.com
使用内部(仅 VPC)负载均衡器 ¶
引入 |
---|
kOps 1.23 |
在配置负载均衡器时,您还可以选择使用公共负载均衡器或内部(仅 VPC)负载均衡器。type
字段应为 Public
或 Internal
(如果省略,则默认为 Public
)。
spec:
topology:
bastion:
loadBalancer:
type: "Internal"
向 ELB 添加额外的安全组 ¶
引入 |
---|
kOps 1.18 |
如果您要向堡垒机 ELB 添加安全组
spec:
topology:
bastion:
bastionPublicName: bastion.mycluster.example.com
loadBalancer:
additionalSecurityGroups:
- "sg-***"
使用八卦时的访问 ¶
当使用 八卦模式 时,没有 DNS 区域可以为堡垒机配置 CNAME。由于堡垒机位于负载均衡器的前面,因此您可以使用负载均衡器的端点来访问您的堡垒机。
在 AWS 上,查找此 DNS 名称的简便方法是使用 kops toolbox
kops toolbox dump -ojson | grep 'bastion.*elb.amazonaws.com'
更改您的 ELB 空闲超时 ¶
堡垒机通过 AWS ELB 访问。ELB 是连接到私有网络并连接用户到堡垒机所在 ASG 所必需的。默认情况下,kOps 会将堡垒机 ELB 空闲超时设置为 5 分钟。这对于您计划保持打开的堡垒机的 SSH 连接很重要。
您可以通过编辑主集群配置 kops edit cluster $NAME
并修改以下块来增加 ELB 空闲超时
spec:
topology:
bastion:
idleTimeoutSeconds: 1200
其中最大值为 AWS 允许的 3600 秒(60 分钟)。有关更多信息,请参阅 配置空闲超时。
使用堡垒机 ¶
设置集群后,如果需要 SSH 到堡垒机,可以使用以下步骤访问集群资源
# Verify you have an SSH agent running. This should match whatever you built your cluster with.
ssh-add -l
# If you need to add the key to your agent:
ssh-add path/to/private/key
# Now you can SSH into the bastion. Substitute the administrative username of the instance's OS for <username> (`ubuntu` for Ubuntu, `admin` for Debian, etc.) and the bastion domain for <bastion-domain>. If the bastion doesn't have a public CNAME alias, use the domain of the assigned load balancer as the bastion domain.
ssh -A <username>@<bastion-domain>
# then you can use the fowarded authentication to SSH into control-plane or worker nodes in the cluster.
ssh <username>@<node-address>
现在您可以成功地使用转发 SSH 代理 SSH 到堡垒机。您可以使用其本地 IP 地址 SSH 到您的任何集群资源。您可以从云控制台获取其本地 IP 地址。