15

タイトルが示すように、AWS で定義済みのセキュリティ グループを LoadBalancer サービスに強制的に使用させる方法を探しています。Kubernetes によって ELB 用に作成されたセキュリティ グループのインバウンド/アウトバウンド ルールを手動で編集する必要はありません。ドキュメント内で何も見つけることができず、オンラインの他の場所で機能するものも見つけられませんでした. これが私の現在のテンプレートです:

apiVersion: v1
kind: Service
metadata:
  name: ds-proxy
spec:
  type: LoadBalancer
  ports:
  - port: 8761 # the port that this service should serve on
    targetPort: 8761
    protocol: TCP
  selector:
    app: discovery-service
4

5 に答える 5

24

編集: 2021 - 回答が古くなっていると言われました。代わりに、stackoverflow.com/a/70162565/699493 を参照してください。

Kubernetes が新しいセキュリティ グループを作成するのを防ぐことはできません。しかし、Andonaeus の回答が提出されてから、サービスの構成ファイルを介して受信アクセス許可を明示的に定義できる新しい機能が追加されました。

詳細については、ユーザー ガイドの詳細を参照してください。そこに提供されている例は、使用することでspec.loadBalancerSourceRanges受信 IP を許可できることを示しています。

次の例では、130.211.204.1 および 130.211.204.2 の IP アドレスを持つクライアントのみがアクセスできるロード ブランサーが作成されます。

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 8765
      targetPort: 9376
  selector:
    app: example
  type: LoadBalancer
  loadBalancerSourceRanges:
  - 130.211.204.1/32
  - 130.211.204.2/32
于 2016-10-27T18:15:05.117 に答える
2

これは現在不可能のようです。https://github.com/kubernetes/kubernetes/blob/37b5726716231c13117c4b05a841e00417b92cda/pkg/cloudprovider/providers/aws/aws.goの API で次のコードを使用します。

func (s *AWSCloud) EnsureLoadBalancer(name, region string, publicIP net.IP, ports []*api.ServicePort, hosts []string, affinity api.ServiceAffinity) (*api.LoadBalancerStatus, error) {
glog.V(2).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v)", name, region,    publicIP, ports, hosts)

.
.
.

// Create a security group for the load balancer
var securityGroupID string
{
    sgName := "k8s-elb-" + name
    sgDescription := "Security group for Kubernetes ELB " + name
    securityGroupID, err = s.ensureSecurityGroup(sgName, sgDescription, vpcId)
    if err != nil {
        glog.Error("Error creating load balancer security group: ", err)
        return nil, err
    }

    permissions := []*ec2.IpPermission{}
    for _, port := range ports {
        portInt64 := int64(port.Port)
        protocol := strings.ToLower(string(port.Protocol))
        sourceIp := "0.0.0.0/0"

        permission := &ec2.IpPermission{}
        permission.FromPort = &portInt64
        permission.ToPort = &portInt64
        permission.IpRanges = []*ec2.IpRange{{CidrIp: &sourceIp}}
        permission.IpProtocol = &protocol

        permissions = append(permissions, permission)
    }
    _, err = s.ensureSecurityGroupIngress(securityGroupID, permissions)
    if err != nil {
        return nil, err
    }
}
securityGroupIDs := []string{securityGroupID}

.
.
.

}

セキュリティ グループの作成を防止する方法はありません。

于 2016-01-15T17:52:32.517 に答える