Ability to allow inbound connection to AWX receptor mesh on Kubernetes

@kurokobo @tanganellilore we got a good bits of the work done in
feature_awx-mesh-ingress branch on awx and awx-operator

right now if you try to use it it should work

for the awx-operator change we mostly focused on OCP with Route as the ingress

If anyone is interested would u like to contribute the bits needed to get this to work well on non OCP K8S?

Thank you for informing me, Iā€™ll give it a little try in a few days.

1 Like

@TheRealHaoLiu @fosterseth
Is it feasible for AWX Operator to support deployment of IngressRouteTCP for Traefik in addition to Route and Ingress?
I can send PR for this, but It would also be possible to deploy AWXMeshIngress CR with ingress_type: none and have users create their own IngressRouteTCP (In this case AWX Operator does not support IngressRouteTCP).

Traefik (default ingress controller for k3s) requires a TCP Router for TLS passthrough, which consists of a CR called IngressRouteTCP rather than the usual Ingress resource.

Technically, I already have an implementation in my environment that allows jobs to run on Executon Node via Internal Hop Node using IngressRouteTCP.

Draft PR: wip: add ingress and ingressroutetcp for awxmeshingress by kurokobo Ā· Pull Request #1646 Ā· ansible/awx-operator Ā· GitHub

2 Likes

Thanks everyone! the feature landed in AWX now!

check it out!

AWX: 23.8.0
AWX-Operator: 2.12.0

The remote EE node from outside of k8s cluster, how to reach the hop node in the k8s cluster with port 443 ? does the loadbalancer in k8s cluster tell ?
I have installed bundle to remote EE node, but running health check tells the remote EE node is not in the receptor mesh.

what i understand is

  1. in the k8s cluster, awxmeshingress takes pods to service.
  2. outside of k8s cluster, ingress (ingress-nginx) takes the remote EE node to service.

please take a look what I am missing.

this is my service for awxmeshingress

apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: ā€˜{ā€œapiVersionā€:ā€œv1ā€,ā€œkindā€:ā€œServiceā€,ā€œmetadataā€:{ā€œnameā€:ā€œmesh-ingress-1ā€,ā€œnamespaceā€:ā€œawxā€},ā€œspecā€:{ā€œportsā€:[{ā€œnameā€:ā€œwsā€,ā€œportā€:27199,ā€œtargetPortā€:27199}],ā€œselectorā€:{ā€œapp.kubernetes.io/name":ā€œmesh-ingress-1ā€},ā€œtypeā€:"ClusterIPā€}}ā€™
creationTimestamp: ā€œ2024-04-12T07:43:01Zā€
name: mesh-ingress-1
namespace: awx
ownerReferences:

  • apiVersion: awx.ansible.com/v1alpha1
    kind: AWXMeshIngress
    name: mesh-ingress-1
    uid: xxx
    resourceVersion: ā€œ21687088ā€
    uid: xxx
    spec:
    clusterIP: 10.x.x.x
    clusterIPs:
  • 10.x.x.x
    internalTrafficPolicy: Cluster
    ipFamilies:
  • IPv4
    ipFamilyPolicy: SingleStack
    ports:
  • name: ws
    port: 27199
    protocol: TCP
    targetPort: 27199
    selector:
    app.kubernetes.io/name: mesh-ingress-1
    sessionAffinity: None
    type: ClusterIP
    status:
    loadBalancer: {}

===============================================
following is service for ingress-nginx-controller

apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{ā€œapiVersionā€:ā€œv1ā€,ā€œkindā€:ā€œServiceā€,ā€œmetadataā€:{ā€œannotationsā€:{},ā€œlabelsā€:{ā€œapp.kubernetes.io/component":ā€œcontrollerā€,ā€œapp.kubernetes.io/instanceā€:ā€œingress-nginxā€,ā€œapp.kubernetes.io/nameā€:ā€œingress-nginxā€,ā€œapp.kubernetes.io/part-ofā€:ā€œingress-nginxā€,ā€œapp.kubernetes.io/versionā€:ā€œ1.10.0ā€},ā€œnameā€:ā€œingress-nginx-controllerā€,ā€œnamespaceā€:ā€œingress-nginxā€},ā€œspecā€:{ā€œexternalTrafficPolicyā€:ā€œLocalā€,ā€œipFamiliesā€:[ā€œIPv4ā€],ā€œipFamilyPolicyā€:ā€œSingleStackā€,ā€œportsā€:[{ā€œappProtocolā€:ā€œhttpā€,ā€œnameā€:ā€œhttpā€,ā€œportā€:80,ā€œprotocolā€:ā€œTCPā€,ā€œtargetPortā€:ā€œhttpā€},{ā€œappProtocolā€:ā€œhttpsā€,ā€œnameā€:ā€œhttpsā€,ā€œportā€:443,ā€œprotocolā€:ā€œTCPā€,ā€œtargetPortā€:ā€œhttpsā€}],ā€œselectorā€:{ā€œapp.kubernetes.io/componentā€:ā€œcontrollerā€,ā€œapp.kubernetes.io/instanceā€:ā€œingress-nginxā€,ā€œapp.kubernetes.io/nameā€:ā€œingress-nginxā€},ā€œtypeā€:"LoadBalancerā€}}
creationTimestamp: ā€œ2024-04-03T09:20:23Zā€
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.10.0
name: ingress-nginx-controller
namespace: ingress-nginx
resourceVersion: ā€œ18611647ā€
uid: xxx
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.x.x.x
clusterIPs:

  • 10.x.x.x
    externalTrafficPolicy: Local
    healthCheckNodePort: 31209
    internalTrafficPolicy: Cluster
    ipFamilies:
  • IPv4
    ipFamilyPolicy: SingleStack
    ports:
  • appProtocol: http
    name: http
    nodePort: 31789
    port: 80
    protocol: TCP
    targetPort: http
  • appProtocol: https
    name: https
    nodePort: 32148
    port: 443
    protocol: TCP
    targetPort: https
    selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
    sessionAffinity: None
    type: LoadBalancer
    status:
    loadBalancer: {}

@yoonmin1030
Hi, could you please create a new topic on Get Help category?

1 Like

I made it as a topic.

please help me to get more understanding of the topic ā€œawxmeshingress and receptorā€