E.1 Support for IPv4 or IPV6 Configuration for CNC Console
CNC Console supports following deployment modes:
- Single Stack with IPv4 only
 - Single Stack with IPv6 only
 - DualStack with IPv4 Preferred
 - DualStack with IPv6 Preferred
 
Procedure
To deploy the CNC Console in any of these supported modes:
- Before CNC Console deployment, update occncc_custom_values<version>.yaml file and set the cncc-iam.kc.preferIpv6Stack.enabled flag to desired value as mentioned in the below table.
 - After CNC Console is deployed, the following CNC Console services must be backed
                    up, deleted and reapplied with preferred IP_Family configuration as mentioned in
                    the following table:
                        
Note:
Below services have 'cncc' as the release name cncc-acore-ingress-gateway cncc-iam-ingress-gateway cncc-iam-kc-http cncc-mcore-cmservice cncc-mcore-ingress-gatewayThese services do not have any clusterIP assigned, and hence can be ignored. cncc-acore-igw-cache cncc-mcore-igw-cache cncc-iam-igw-cache cncc-iam-kc-headless.
The following table outlines the changes to be made before and after deploying the CNC Console for each deployment mode:Table -9 Single or Dual Stack IP Configuration
Cluster Deployment Mode CNC Console Deployment Mode CNC Console custom values.yaml (PreInstallation Step) Service configuration with preferred IP Family (PostInstallation Step) Single Stack with IPv4 only NA cncc-iam: kc: preferIpv6Stack: enabled: falseThis will lead to no changes in the service file. Depending on the cluster, IPs will be assigned. Single Stack with IPv6 only NA cncc-iam: kc: preferIpv6Stack: enabled: trueThis will lead to no changes in the service file. Depending on the cluster, IPs will be assigned. DualStack with IPv4 Preferred IPv4 Preferred cncc-iam: kc: preferIpv6Stack: enabled: falseThis will lead to no changes in the service file. Depending on the cluster, IPs will be assigned. IPv6 Preferred cncc-iam: kc: preferIpv6Stack: enabled: truespec: ipFamilyPolicy: RequireDualStack ipFamilies: - IPv6 - IPv4DualStack with IPv6 Preferred IPv4 Preferred cncc-iam: kc: preferIpv6Stack: enabled: falsespec: ipFamilyPolicy: RequireDualStack ipFamilies: - IPv4 - IPv6IPv6 Preferred cncc-iam: kc: preferIpv6Stack: enabled: trueThis will lead to no changes in the service file. Depending on the cluster, IPs will be assigned.  
Note:
Run the following commands to edit the service:kubectl edit svc -n <cncc_namespace> <cncc_service>For
                    example:
                  kubectl edit svc -n cncc -n cncc-iam-ingress-gatewaySample CNC Deployment with IPv6 on DualStack with IPv4 Preferred Setup
Consider an example where you want to deploy CNC Console preferred with IPv6 on
                DualStack with IPv4 Preferred setup. This example describes the configuration
                changes required for single service of CNC Console after the deployment. You must
                follow a similar procedure for rest of the CNC Console services. Here:
                     
                  
                  - CNC Console deployment namespace: cncc
 - CNC Console release name: cncc
 - CNC Console service to be edited: cncc-iam-ingress-gateway
 - Infrastructure Deployment Mode: DualStack with IPv4 Preferred
 - CNC Console Deployment Mode: IPv6 Preferred
 
Procedure:
                  
               - Run the following command to verify that cncc-iam-ingress-gateway service is
                        set to IPv4 address:
                            
kubectl get svc cncc-iam-ingress-gateway -n cnccOutput:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cncc-iam-ingress-gateway LoadBalancer 1x.xxx.xx.xx 1x.xxx.xx.xx 30085:32556/TCP 5h8m - Run the following command to take a backup of cncc-iam-ingress-gateway
                        service and duplicate it for recovery purpose:
                        
kubectl get svc cncc-iam-ingress-gateway -n cncc -o yaml > cncc-iam-ingress-gateway.yaml; cp cncc-iam-ingress-gateway.yaml cncc-iam-ingress-gateway_orig.yaml; - Run the following command to delete the original cncc-iam-ingress-gateway
                        service:
kubectl delete svc cncc-iam-ingress-gateway -n cncc - Run the following command to edit the cncc-iam-ingress-gateway.yaml file
                        generated as part of step
                        2:
vim cncc-iam-ingress-gateway.yaml - Update following in the cncc-iam-ingress-gateway.yaml:
                           
- Delete clusterIPs and clusterIP fields
                                completely.
# Remove the clusterIP and clusterIPs field ... spec: ... clusterIP: 1x.xxx.xx.xx clusterIPs: - 1x.xxx.xx.xx ... - Under spec.ipFamilyPolicy set
                                    RequiredDualStack and under spec.ipFamilies set
                                    [- IPv6, - IPv4] as
                                follows:
apiVersion: v1 kind: Service metadata: ... name: cncc-iam-ingress-gateway namespace: cncc spec: allocateLoadBalancerNodePorts: true ... ... ipFamilies: - IPv6 - IPv4 ipFamilyPolicy: RequireDualStack ... ... sessionAffinity: None type: LoadBalancer status: loadBalancer: {} 
 - Delete clusterIPs and clusterIP fields
                                completely.
 - Run the following command to apply the cncc-iam-ingress-gateway.yaml
                        file:
kubectl apply -f cncc-iam-ingress-gateway.yaml -n cncc - Run the following command to check the service output. You should find the
                        service with updated the IPv6
                            address:
kubectl get svc cncc-iam-ingress-gateway -n cnccOutput:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cncc-iam-ingress-gateway LoadBalancer xxxx:0:0:2::xxxx xxxx:b400:605:xxx::3 30085:32556/TCP 5h8m