• OCP集群内的AKO功能测试


    NSX ALB + Harbor + OpenShift 4.8 UPI安装配置实验笔记系列目录

    目录

    NSX ALB + Harbor + OpenShift 4.8 UPI安装配置实验笔记系列目录

    1 基本功能测试

    1.1 AVI DNS功能测试

    1.2 查看AKO安装前已发布的应用route的变化

    1.2.1 查看avi-demo-route yaml

    1.2.2 查看NSX ALB中的Virtual Service

    1.2.3 不修改测试主机的hosts记录访问avi-demo网址

    1.2.4 清理主机hosts记录并测试

    1.2.5 查看AVI中对应Virtual Service后的服务池

    1.2.6 以HTTPS方式访问测试

    1.3 4层load balancer的应用发布

    1.3.1 新建4层的LB应用发布

    1.3.2 查看AVI中的Virtual Service

    1.3.3 访问验证

    1.4 Ingress服务在NSX ALB中的体现

    2 AVI TSL卸载测试

    2.1 部署支持https的nginx服务

    2.2 发布nginx服务

    2.2.1 常规http服务发布

    2.2.2 发布Termination为edge的Https服务

    2.2.3 发布Termination为passthrough的Https服务

    2.2.4 发布Termination为reencrypt的Https服务

    3 Gateway API测试

    3.1 创建gateway-class

    3.2 创建gateway

    3.3 发布服务

    3.4 结果测试


    1 基本功能测试

    1.1 AVI DNS功能测试

    此LAB环境中AVI内启用了两个DNS Service,IP分别为192.168.150.10和192.168.170.10,这两个DNS服务分别承载于不同的SE Group。

    经测试,OCP环境中发布服务域名可以同时被这两个DNS服务解析。

    结果如下图:

    1.2 查看AKO安装前已发布的应用route的变化

    1.2.1 查看avi-demo-route yaml

    1.2.2 查看NSX ALB中的Virtual Service

    在AVI的Virtual Service中已自动生成了一个VIP为192.168.180.35的服务:

    1.2.3 不修改测试主机的hosts记录访问avi-demo网址

    1.2.4 清理主机hosts记录并测试

    1.2.5 查看AVI中对应Virtual Service后的服务池

    1.2.6 以HTTPS方式访问测试

    以https的方式访问https://avi-demo-route-avi-demo.apps.ocp.corp.tanzu/ 同样可以打开AVI-DEMO的测试链接,如下图:

    这是因为AVI做了SSL卸载,具体如下图:

    1.3 4层load balancer的应用发布

    1.3.1 新建4层的LB应用发布

    1. kubectl -n avi-demo expose deploy/avi-demo --port=80 --target-port=80 --name=avi-demo-lb --type=LoadBalancer
    2. oc -n avi-demo get svc

    1.3.2 查看AVI中的Virtual Service

    1.3.3 访问验证

    通过IP或域名均可访问,结果如下:

    1.4 Ingress服务在NSX ALB中的体现

    在“在OCP集群内部署测试应用”中的第5节内ingress发布了“edge”和“passthrough”两种模式,如下图:

    我们在NSX ALB中查看AKO的同步结果信息如下图:

    如上图所示,avi-demo-ingress-dege模式的并未在NSX ALB中体现,passthrough模式的服务同步至了NSX ALB中,但此处仅为4层LB模式:

    我们将avi-demo-ingress-dege在hosts文件中设定记录,如下:

    192.168.170.31 avi-demo-ingress-edge.apps.ocp.corp.tanzu

    通过IE分别测试这两个网址,发现avi-demo-ingress.apps.ocp.corp.tanzu无法访问。在Operator主机使用curl得到结果如下:

    根据返回码“302”可得知被redirect。查看对应ingress route配置,“insecureEdgeTerminationPolicy: Redirect”得知不安全的访问将被重定向,因此处为对应ingress自动生成的route,此处配置无法更改为Allow:

    2 AVI TSL卸载测试

    2.1 部署支持https的nginx服务

    1). 生成自签名证书与密钥:

    openssl req -newkey rsa:2048 -nodes -keyout nginx.key -x509 -days 3650 -out nginx.crt

    2). 创建nginx项目:

    oc new-project nginx-demo

    3). 向nginx-demo项目中导入Secret,并命名为nginx-certs-keys:

    oc create secret generic nginx-certs-keys --from-file=/root/cert/nginx.crt  --from-file=/root/cert/nginx.key -n nginx-demo

    4). 配置默认的配置文件:

    1. vi default.conf
    2. server {
    3. listen 80 default_server;
    4. listen [::]:80 default_server ipv6only=on;
    5. listen 443 ssl;
    6. root /usr/share/nginx/html;
    7. index index.html;
    8. server_name localhost;
    9. ssl_certificate /etc/nginx/ssl/nginx.crt;
    10. ssl_certificate_key /etc/nginx/ssl/nginx.key;
    11. ssl_session_timeout 1d;
    12. ssl_session_cache shared:SSL:50m;
    13. ssl_session_tickets off;
    14. # modern configuration. tweak to your needs.
    15. ssl_protocols TLSv1.2;
    16. ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    17. ssl_prefer_server_ciphers on;
    18. # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    19. add_header Strict-Transport-Security max-age=15768000;
    20. # OCSP Stapling ---
    21. # fetch OCSP records from URL in ssl_certificate and cache them
    22. ssl_stapling on;
    23. ssl_stapling_verify on;
    24. location / {
    25. try_files $uri $uri/ =404;
    26. }
    27. }

    5). 使用default.conf文件为Nginx创建configmap:

    1. oc -n nginx-demo create configmap nginx-configmap --from-file=/root/cert/default.conf
    2. oc get configmaps
    3. oc describe configmaps nginx-configmap

    6). 创建pod和service:

    1. oc adm policy add-scc-to-user anyuid -z default
    2. cat << EOF > nginx-demo.yaml
    3. apiVersion: apps/v1
    4. kind: Deployment
    5. metadata:
    6. name: nginx
    7. namespace: nginx-demo
    8. spec:
    9. replicas: 3
    10. selector:
    11. matchLabels:
    12. app: nginx
    13. template:
    14. metadata:
    15. labels:
    16. app: nginx
    17. spec:
    18. volumes:
    19. - name: secret-volume
    20. secret:
    21. secretName: nginx-certs-keys
    22. - name: configmap-volume
    23. configMap:
    24. name: nginx-configmap
    25. containers:
    26. - name: nginx
    27. image: "map.corp.tanzu/apps/nginx-unprivileged:latest"
    28. ports:
    29. - containerPort: 80
    30. - containerPort: 443
    31. volumeMounts:
    32. - name: nginx1-config
    33. mountPath: /etc/nginx/nginx.conf
    34. subPath: nginx.conf
    35. volumeMounts:
    36. - mountPath: /etc/nginx/ssl
    37. name: secret-volume
    38. - mountPath: /etc/nginx/conf.d
    39. name: configmap-volume
    40. ---
    41. apiVersion: v1
    42. kind: Service
    43. metadata:
    44. name: nginx-svc
    45. namespace: nginx-demo
    46. spec:
    47. selector:
    48. app: nginx
    49. ports:
    50. - protocol: TCP
    51. port: 80
    52. targetPort: 80
    53. name: http
    54. - protocol: TCP
    55. port: 443
    56. targetPort: 443
    57. name: https
    58. EOF
    59. oc apply -f nginx-demo.yaml

    2.2 发布nginx服务

    2.2.1 常规http服务发布

    oc expose svc nginx-svc --name=nginx-route

    可以看到AVI中已自动生成记录:

    在Operator操作机中使用curl访问http和https均可,此处https能访问的原因与1.2.6相同。

    2.2.2 发布Termination为edge的Https服务

    1). 打开NSXALB的 System-Default-Cert。

    2). 进入OCP GUI新建路由,并且在证书与私钥部分输入NSXALB中System-Default-Cert的值,然后创建route:

    具体yaml如下:

    1. piVersion: route.openshift.io/v1
    2. kind: Route
    3. metadata:
    4. name: nginx-edge
    5. namespace: nginx-demo
    6. spec:
    7. host: nginx-edge.apps.ocp.corp.tanzu
    8. to:
    9. kind: Service
    10. name: nginx-svc
    11. weight: 100
    12. port:
    13. targetPort: http
    14. tls:
    15. termination: edge
    16. certificate: |
    17. -----BEGIN CERTIFICATE-----
    18. MIIDRTCCAi2gAwIBAgIUSGdsEmU6K3zBiUmtwsQ52S5yEJswDQYJKoZIhvcNAQEL
    19. BQAwHjEcMBoGA1UEAwwTU3lzdGVtIERlZmF1bHQgQ2VydDAeFw0yMTA1MDYwMjMw
    20. MTFaFw0zMTA1MDQwMjMwMTFaMB4xHDAaBgNVBAMME1N5c3RlbSBEZWZhdWx0IENl
    21. cnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe+q8lem+lvAtWg0kS
    22. 86lXhvpyG2wC7hPrS3E7ih2RDMbmDHtvyIxVNE/lF+HsDBOrxC5EWVuPpd+c84ec
    23. 7jCTeBMVeAYiMo/BYCFx+Oqe9dtGiwwmVpmf0Ft/PiVaJ27UDOr8s1M1T8x2BAe9
    24. S6+du+H7QMWuPLZvkvoN/5BtwaJVKfNedVMYLht7B0pGx5IovB9DEXPJTGIP0YK/
    25. 7o0lC+ZvxsgMDYkQz1QGPPddfc/MZ4Py3MY8KB3txxwwPnv20goMGy9rJXQwSTB/
    26. xa5BMn8ml8nVPRQvNsy7kyTY2h4SeZFMYJxQ/3DYVE6HIymec5BjskFVB4hH9C4j
    27. dIdtAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wg
    28. R2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQ0xRoXx0XoPIgIVp5R7Mh5
    29. cPTjqDAfBgNVHSMEGDAWgBQ0xRoXx0XoPIgIVp5R7Mh5cPTjqDANBgkqhkiG9w0B
    30. AQsFAAOCAQEAtm5O3gN0klWo2UztWC6eGCqNDDMKRNhbPYhq17vMj42xejcjvYZC
    31. Yb5qj3ioHo9qOxleJjKvRGGt5F6j0cw5jo51910KbyH8/wet1wYq5jttIvQ15D33
    32. JTP+02FW+ASis0wMT/DtbgxE2TjdTU424Ff83xAYQ2Atcal01E3gbNkH+ziqx4Yd
    33. 4Flgr9E7tT9zWxsLQTA7t9Zy9xMT3j1tJGwJXrVC1NJfdUCrLhP9ROHs5TiBuegF
    34. 0WpXnbod4YRqkMGBw8Vy/E9Y0JBf2RCS8eXAr5y//B5dsw9+pJuG4gymnNa1IPtj
    35. 9FP9PiS2AnRMpO5u716eGQNM3wx3eZxRSg==
    36. -----END CERTIFICATE-----
    37. key: |
    38. -----BEGIN PRIVATE KEY-----
    39. MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe+q8lem+lvAtW
    40. g0kS86lXhvpyG2wC7hPrS3E7ih2RDMbmDHtvyIxVNE/lF+HsDBOrxC5EWVuPpd+c
    41. 84ec7jCTeBMVeAYiMo/BYCFx+Oqe9dtGiwwmVpmf0Ft/PiVaJ27UDOr8s1M1T8x2
    42. BAe9S6+du+H7QMWuPLZvkvoN/5BtwaJVKfNedVMYLht7B0pGx5IovB9DEXPJTGIP
    43. 0YK/7o0lC+ZvxsgMDYkQz1QGPPddfc/MZ4Py3MY8KB3txxwwPnv20goMGy9rJXQw
    44. STB/xa5BMn8ml8nVPRQvNsy7kyTY2h4SeZFMYJxQ/3DYVE6HIymec5BjskFVB4hH
    45. 9C4jdIdtAgMBAAECggEBAMGQ5RKn4twBDeagOYNWOp9c8XS1EWLJwkj0SOvizh/o
    46. 85EpLM6xTgF5VBIQVXNQWJM3zuJOoAlneWMKlaNJsqmSBx8P/mMZeWnpRZ9m8mXk
    47. D+KBOp7ddqchfQxMqqhEqxUx0ZxlH8qb52ZbwUw2s9E+FMLES9chpU3eTWxxerOL
    48. UZ3u9T2y671bULzl8AzoIawTQLEIctx9TYL+iZ23asNU4eg86WSetARdwTuzC/BF
    49. hFFRV1KrBpBD7zJdf2ylSmxq4VWOosWFZRQJyip5wZUXtBcQ/cWqpsm2N4mi+rpf
    50. K0yIrsBnRPKjOxXopEOrJEDN+qQcYS4g22GfNJ6HopECgYEA9hN6kHwlN/TPkMSM
    51. /X47fYf0OENOO6VqgFPyH35WpJkKvItuEhqFo03DuqUq6M8qZariIhqibsR42Fdy
    52. zaPDsAqPOoSDpNpBdRG3NWdKQdMHX5KKWx1xK+hq1FGvpihTbDooBML9/JNajVm0
    53. CjVu1OyV24MnGfZxMePrN89SO+MCgYEA5/jAIQpp+2wylC3oO9DFnKCvzFdb0L/l
    54. pw5FmfQ/OZ6+PNufUEKZFW1vG8aHnCzfY+iVKhoFkCGxLqDNN1aflztqL0OzJnkF
    55. 7lZ/jtSSeuOEKL7QMjF8Z1R4s4g0ppr0bVwt7qBcY+dLAwYWfhzTc5TS1m+WDi11
    56. ckvL9BbGMG8CgYAiGczwXOPjfz+MdlB7iJTB7qc/bMRYq7G4mumAx8dGBBdizYex
    57. Zo+Cc/Jd2Sm7HYpokGfKBhrgcsW0ZVn5eWpS6QO0Pkzn+X78tDnJYsj9mjr5WZtm
    58. yQu34/t59N/8jLYS13RYRJVh/SGdWQMELyduxmJ2CxTOGkLRgR5Fm6tvtQKBgQCN
    59. OYDm3Ks3OWD1m5lGSUz1lVJRymGIjjunX+X525xeXQmejWrJdzIxvGUneM94wkzi
    60. S2f8sMjwPcLcC2PErAUPEkoMKmA4LPfyaVDRSRNAo6EDGWAxHrWJRwEQ8/xx7eaf
    61. ab5BB/oXjGm7loo9DxmgxVsy1854JS7afdDWcsMIGwKBgAn9o2pM0MGPr96ShILD
    62. f8y9fvMGDw1GWCjIJW0j9QwCid7wLEKuw2JUASUOxmEjtyg7aChSIEy9q6V5WRX9
    63. /hx28WXM2oTEiEOuNVskaArv4nFsODeZfCAESr4z/anChbOqtr+OxvI18afCNj/1
    64. Fk1LPCucPIA+B2bwXxwiZU04
    65. -----END PRIVATE KEY-----
    66. insecureEdgeTerminationPolicy: Redirect
    67. wildcardPolicy: None

    3). 检测发部结果

    4). 查看NSXALB内的VS

    2.2.3 发布Termination为passthrough的Https服务

    1). 进入OCP GUI新建路由,

    具体yaml如下:

    1. piVersion: route.openshift.io/v1
    2. kind: Route
    3. metadata:
    4. name: nginx-passthrough
    5. namespace: nginx-demo
    6. spec:
    7. host: nginx-pass.apps.ocp.corp.tanzu
    8. to:
    9. kind: Service
    10. name: nginx-svc
    11. weight: 100
    12. port:
    13. targetPort: https
    14. tls:
    15. termination: passthrough
    16. insecureEdgeTerminationPolicy: Redirect
    17. wildcardPolicy: None

    2). 检测发部结果:

    3). 查看NSXALB内的VS

    2.2.4 发布Termination为reencrypt的Https服务

    1). 进入OCP GUI新建路由,

    具体yaml如下:

    1. kind: Route
    2. apiVersion: route.openshift.io/v1
    3. metadata:
    4. name: nginx-reencrypt
    5. namespace: nginx-demo
    6. spec:
    7. host: nginx-reencrypt.apps.ocp.corp.tanzu
    8. to:
    9. kind: Service
    10. name: nginx-svc
    11. weight: 100
    12. port:
    13. targetPort: https
    14. tls:
    15. termination: reencrypt
    16. certificate: |
    17. -----BEGIN CERTIFICATE-----
    18. MIIDRTCCAi2gAwIBAgIUSGdsEmU6K3zBiUmtwsQ52S5yEJswDQYJKoZIhvcNAQEL
    19. BQAwHjEcMBoGA1UEAwwTU3lzdGVtIERlZmF1bHQgQ2VydDAeFw0yMTA1MDYwMjMw
    20. MTFaFw0zMTA1MDQwMjMwMTFaMB4xHDAaBgNVBAMME1N5c3RlbSBEZWZhdWx0IENl
    21. cnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe+q8lem+lvAtWg0kS
    22. 86lXhvpyG2wC7hPrS3E7ih2RDMbmDHtvyIxVNE/lF+HsDBOrxC5EWVuPpd+c84ec
    23. 7jCTeBMVeAYiMo/BYCFx+Oqe9dtGiwwmVpmf0Ft/PiVaJ27UDOr8s1M1T8x2BAe9
    24. S6+du+H7QMWuPLZvkvoN/5BtwaJVKfNedVMYLht7B0pGx5IovB9DEXPJTGIP0YK/
    25. 7o0lC+ZvxsgMDYkQz1QGPPddfc/MZ4Py3MY8KB3txxwwPnv20goMGy9rJXQwSTB/
    26. xa5BMn8ml8nVPRQvNsy7kyTY2h4SeZFMYJxQ/3DYVE6HIymec5BjskFVB4hH9C4j
    27. dIdtAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wg
    28. R2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQ0xRoXx0XoPIgIVp5R7Mh5
    29. cPTjqDAfBgNVHSMEGDAWgBQ0xRoXx0XoPIgIVp5R7Mh5cPTjqDANBgkqhkiG9w0B
    30. AQsFAAOCAQEAtm5O3gN0klWo2UztWC6eGCqNDDMKRNhbPYhq17vMj42xejcjvYZC
    31. Yb5qj3ioHo9qOxleJjKvRGGt5F6j0cw5jo51910KbyH8/wet1wYq5jttIvQ15D33
    32. JTP+02FW+ASis0wMT/DtbgxE2TjdTU424Ff83xAYQ2Atcal01E3gbNkH+ziqx4Yd
    33. 4Flgr9E7tT9zWxsLQTA7t9Zy9xMT3j1tJGwJXrVC1NJfdUCrLhP9ROHs5TiBuegF
    34. 0WpXnbod4YRqkMGBw8Vy/E9Y0JBf2RCS8eXAr5y//B5dsw9+pJuG4gymnNa1IPtj
    35. 9FP9PiS2AnRMpO5u716eGQNM3wx3eZxRSg==
    36. -----END CERTIFICATE-----
    37. key: |
    38. -----BEGIN PRIVATE KEY-----
    39. MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe+q8lem+lvAtW
    40. g0kS86lXhvpyG2wC7hPrS3E7ih2RDMbmDHtvyIxVNE/lF+HsDBOrxC5EWVuPpd+c
    41. 84ec7jCTeBMVeAYiMo/BYCFx+Oqe9dtGiwwmVpmf0Ft/PiVaJ27UDOr8s1M1T8x2
    42. BAe9S6+du+H7QMWuPLZvkvoN/5BtwaJVKfNedVMYLht7B0pGx5IovB9DEXPJTGIP
    43. 0YK/7o0lC+ZvxsgMDYkQz1QGPPddfc/MZ4Py3MY8KB3txxwwPnv20goMGy9rJXQw
    44. STB/xa5BMn8ml8nVPRQvNsy7kyTY2h4SeZFMYJxQ/3DYVE6HIymec5BjskFVB4hH
    45. 9C4jdIdtAgMBAAECggEBAMGQ5RKn4twBDeagOYNWOp9c8XS1EWLJwkj0SOvizh/o
    46. 85EpLM6xTgF5VBIQVXNQWJM3zuJOoAlneWMKlaNJsqmSBx8P/mMZeWnpRZ9m8mXk
    47. D+KBOp7ddqchfQxMqqhEqxUx0ZxlH8qb52ZbwUw2s9E+FMLES9chpU3eTWxxerOL
    48. UZ3u9T2y671bULzl8AzoIawTQLEIctx9TYL+iZ23asNU4eg86WSetARdwTuzC/BF
    49. hFFRV1KrBpBD7zJdf2ylSmxq4VWOosWFZRQJyip5wZUXtBcQ/cWqpsm2N4mi+rpf
    50. K0yIrsBnRPKjOxXopEOrJEDN+qQcYS4g22GfNJ6HopECgYEA9hN6kHwlN/TPkMSM
    51. /X47fYf0OENOO6VqgFPyH35WpJkKvItuEhqFo03DuqUq6M8qZariIhqibsR42Fdy
    52. zaPDsAqPOoSDpNpBdRG3NWdKQdMHX5KKWx1xK+hq1FGvpihTbDooBML9/JNajVm0
    53. CjVu1OyV24MnGfZxMePrN89SO+MCgYEA5/jAIQpp+2wylC3oO9DFnKCvzFdb0L/l
    54. pw5FmfQ/OZ6+PNufUEKZFW1vG8aHnCzfY+iVKhoFkCGxLqDNN1aflztqL0OzJnkF
    55. 7lZ/jtSSeuOEKL7QMjF8Z1R4s4g0ppr0bVwt7qBcY+dLAwYWfhzTc5TS1m+WDi11
    56. ckvL9BbGMG8CgYAiGczwXOPjfz+MdlB7iJTB7qc/bMRYq7G4mumAx8dGBBdizYex
    57. Zo+Cc/Jd2Sm7HYpokGfKBhrgcsW0ZVn5eWpS6QO0Pkzn+X78tDnJYsj9mjr5WZtm
    58. yQu34/t59N/8jLYS13RYRJVh/SGdWQMELyduxmJ2CxTOGkLRgR5Fm6tvtQKBgQCN
    59. OYDm3Ks3OWD1m5lGSUz1lVJRymGIjjunX+X525xeXQmejWrJdzIxvGUneM94wkzi
    60. S2f8sMjwPcLcC2PErAUPEkoMKmA4LPfyaVDRSRNAo6EDGWAxHrWJRwEQ8/xx7eaf
    61. ab5BB/oXjGm7loo9DxmgxVsy1854JS7afdDWcsMIGwKBgAn9o2pM0MGPr96ShILD
    62. f8y9fvMGDw1GWCjIJW0j9QwCid7wLEKuw2JUASUOxmEjtyg7aChSIEy9q6V5WRX9
    63. /hx28WXM2oTEiEOuNVskaArv4nFsODeZfCAESr4z/anChbOqtr+OxvI18afCNj/1
    64. Fk1LPCucPIA+B2bwXxwiZU04
    65. -----END PRIVATE KEY-----
    66. destinationCACertificate: |-
    67. -----BEGIN CERTIFICATE-----
    68. MIIDdzCCAl+gAwIBAgIJAKNpgh6rsBdjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
    69. BAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
    70. Q29tcGFueSBMdGQxDjAMBgNVBAMMBW5naW54MB4XDTIyMDUxMDE0MDc0NFoXDTMy
    71. MDUwNzE0MDc0NFowUjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0
    72. eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEOMAwGA1UEAwwFbmdpbngw
    73. ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDlLruPV8gyyaZ9vxJ+KrqC
    74. f2jOawZ6+50cu5qVThhnvlQxTH4+MhDmGetg8EcOqs2q7/SYMA3KTkreTkcE6mc8
    75. 5uTLm0Cz7tBvEnK4kQbHyEUwPUEUewfDZwJfLtUV8B4JqWy811+GJKxsWu6A4rt0
    76. A6L5LUlijLx6G15aeyT/kXuO337IBD7kBgXjAm/gWOTXj2iLWP77xhuLohhvwcSc
    77. 9ff34Ug8ZldWVYrMRmAYf+xtQzsR765cp4XuYdaGizKsBFiqzorIP1J7exy/VSWq
    78. dogEKSgAkjJVj20HobZwwLdksukuMIzMxXcaX0xs9ekbjc0stMaJR9d8xL32uBnD
    79. AgMBAAGjUDBOMB0GA1UdDgQWBBRKHGAAFK4Z90U3ENg9dIT6aDHxjzAfBgNVHSME
    80. GDAWgBRKHGAAFK4Z90U3ENg9dIT6aDHxjzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
    81. DQEBCwUAA4IBAQAGZHWExc7vVXYR3HBdcqi5AULWNGwAVk9hl4Ulr2dxdd0sEW/o
    82. KHruS6K7QUYr1xBW+n6Ut3YwpAxXOca8Ce5+tbhOaSWEm0SA2Q4pYlSPQiEOJxq0
    83. 3EGqkCDXoOjFlHgfG8W4BncMlzewHINljXhRrDRmPTQuef/80mM/zYXX+Cq7EILt
    84. clTPOSyxuHFmSteUpjyauOt5RPGZL4HFbIEjjwwMcrIRMseq2d49eo+V+xlHd+8M
    85. QOaEvtCM285Za2tdtuPBLss+dd4JglN9Hstjcna9x/lAe1TdtsTt7JnKpCuro6xI
    86. BFW3Dk75tmK4OJch6EVl12HmGjo63guanFrE
    87. -----END CERTIFICATE-----
    88. insecureEdgeTerminationPolicy: Redirect
    89. wildcardPolicy: None

    2). 检测发布结果:

    3). 查看NSXALB内的VS和Pool:

    3 Gateway API测试

           在创建L4负载时,默认情况下会一直使用新的VIP地址,这种情况下VIP地址会随着业务应用的发布快速消耗。要改善这一情况,可使用Gateway对像来实现利用已存在的VIP来为新的应用提供服务,以便实现VIP地址的节约。

    3.1 创建gateway-class

    1. cat << EOF > gw-class.yaml
    2. apiVersion: networking.x-k8s.io/v1alpha1
    3. kind: GatewayClass
    4. metadata:
    5. name: nsxalb-gateway-class
    6. spec:
    7. controller: ako.vmware.com/avi-lb
    8. EOF
    9. oc apply -f gw-class.yaml 

    3.2 创建gateway

    1. cat << EOF > gw.yaml
    2. kind: Gateway
    3. apiVersion: networking.x-k8s.io/v1alpha1
    4. metadata:
    5. name: gateway-01
    6. namespace: default
    7. spec:
    8. gatewayClassName: nsxalb-gateway-class
    9. listeners:
    10. - protocol: TCP
    11. port: 80
    12. hostname: avidemo-8080.apps.ocp.corp.tanzu
    13. routes:
    14. selector:
    15. matchLabels:
    16. ako.vmware.com/gateway-namespace: default
    17. ako.vmware.com/gateway-name: gateway-01
    18. group: v1
    19. kind: Service
    20. - protocol: TCP
    21. port: 8080
    22. hostname: avidemo-80.apps.ocp.corp.tanzu
    23. routes:
    24. selector:
    25. matchLabels:
    26. ako.vmware.com/gateway-namespace: default
    27. ako.vmware.com/gateway-name: gateway-01
    28. group: v1
    29. kind: Service
    30. EOF
    31. oc apply -f gw.yaml

    此处GW建好后,在NSXALB GUI的VS中已可以看到对应对像

    3.3 发布服务

    1. cat << EOF > gw-app-svc.yaml
    2. apiVersion: v1
    3. kind: Service
    4. metadata:
    5. name: avidemo-8080
    6. namespace: avi-demo
    7. labels:
    8. ako.vmware.com/gateway-name: gateway-01
    9. ako.vmware.com/gateway-namespace: default
    10. spec:
    11. type: ClusterIP
    12. ports:
    13. - port: 8080
    14. name: eighty-eighty
    15. targetPort: 80
    16. protocol: TCP
    17. selector:
    18. app: avi-demo
    19. ---
    20. apiVersion: v1
    21. kind: Service
    22. metadata:
    23. name: avidemo-80
    24. namespace: avi-demo
    25. labels:
    26. ako.vmware.com/gateway-name: gateway-01
    27. ako.vmware.com/gateway-namespace: default
    28. spec:
    29. type: ClusterIP
    30. ports:
    31. - port: 80
    32. name: eighty-eighty
    33. targetPort: 80
    34. protocol: TCP
    35. selector:
    36. app: avi-demo
    37. EOF
    38. oc apply -f gw-app-svc.yaml

    3.4 结果测试

  • 相关阅读:
    java自学阶段二:JavaWeb开发60(mybatis学习)
    英语四六级高频核心词(故事版)
    (十二)笔记MQ学习之优劣介绍
    15、Java 多态的详细介绍(参考官方教程)
    MySQL 子查询(多表查询 三)
    S7-200SMART PLC实现冒泡排序的具体方法和程序示例
    leetcode mysql 184. 部门工资最高的员工
    Jmeter项目实战
    spring cloud系统安装涉及的技术说明
    解释区块链技术的应用场景和优势
  • 原文地址:https://blog.csdn.net/frank0521/article/details/125476778