• Kubernetes Submit Queue's avatar
    Merge pull request #49697 from zetaab/mfloating · c3f4dba5
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 47416, 47408, 49697, 49860, 50162)
    
    add possibility to use multiple floatingip pools in openstack loadbalancer
    
    **What this PR does / why we need it**: Currently only one floating pool is supported in kubernetes openstack cloud provider. It is quite big issue for us, because we want run only single kubernetes cluster, but we want that external and internal services can be used. It means that we need possibility to create services with internal and external pools.
    
    **Which issue this PR fixes**: fixes #49147
    
    **Special notes for your reviewer**: service labels is not maybe correct place to define this floatingpool id. However, I did not find any better place easily. I do not want start modifying service api structure.
    
    **Release note**:
    ```release-note
    Add possibility to use multiple floatingip pools in openstack loadbalancer
    ```
    
    Example how it works:
    ```
    cat /etc/kubernetes/cloud-config
    [Global]
    auth-url=https://xxxx
    username=xxxx
    password=xxxx
    region=yyy
    tenant-id=b23efb65b1d44b5abd561511f40c565d
    domain-name=foobar
    
    [LoadBalancer]
    lb-version=v2
    subnet-id=aed26269-cd01-4d4e-b0d8-9ec726c4c2ba
    lb-method=ROUND_ROBIN
    floating-network-id=56e523e7-76cb-477f-80e4-2dc8cf32e3b4
    create-monitor=yes
    monitor-delay=10s
    monitor-timeout=2000s
    monitor-max-retries=3
    ```
    ```
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            run: web
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        run: web-ext
      name: web-ext
      namespace: default
    spec:
      selector:
        run: web
      ports:
      - port: 80
        name: https
        protocol: TCP
        targetPort: 80
      type: LoadBalancer
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        run: web-int
        floatingPool: a2a84887-4915-42bf-aaff-2b76688a4ec7
      name: web-int
      namespace: default
    spec:
      selector:
        run: web
      ports:
      - port: 80
        name: https
        protocol: TCP
        targetPort: 80
      type: LoadBalancer
    ```
    ```
    % kubectl create -f example.yaml
    deployment "nginx-deployment" created
    service "web-ext" created
    service "web-int" created
    % kubectl get svc -o wide
    NAME         CLUSTER-IP       EXTERNAL-IP                   PORT(S)        AGE       SELECTOR
    kubernetes   10.254.0.1       <none>                        443/TCP        2m        <none>
    web-ext      10.254.23.153    192.168.1.57,193.xx.xxx.xxx   80:30151/TCP   52s       run=web
    web-int      10.254.128.141   192.168.1.58,10.222.130.80    80:32431/TCP   52s       run=web
    ```
    
    cc @anguslees @k8s-sig-openstack-feature-requests @dims
    c3f4dba5
Name
Last commit
Last update
..
BUILD Loading commit data...
MAINTAINERS.md Loading commit data...
OWNERS Loading commit data...
metadata.go Loading commit data...
metadata_test.go Loading commit data...
openstack.go Loading commit data...
openstack_client.go Loading commit data...
openstack_instances.go Loading commit data...
openstack_loadbalancer.go Loading commit data...
openstack_metrics.go Loading commit data...
openstack_routes.go Loading commit data...
openstack_routes_test.go Loading commit data...
openstack_test.go Loading commit data...
openstack_volumes.go Loading commit data...