Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add blog post for StarlingX dual-stack (IPv4/IIPv6) support #281

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

akantek-wr
Copy link

@akantek-wr akantek-wr commented Sep 27, 2024

  • Add blog post for StarlingX dual-stack (IPv4/IIPv6) support

This blog post reflects the activities done for the story https://storyboard.openstack.org/#!/story/2011027

Andre Kantek

* Add blog post for StarlingX dual-stack (IPv4/IIPv6) support

----------

Signed-off-by: Andre Kantek <[email protected]>
DEL=$(system network-addrpool-list | awk '$6 == "cluster-service-ipv4" { print $2 }') && system network-addrpool-remove $DEL
DEL=$(system network-addrpool-list | awk '$6 == "cluster-host-ipv4" { print $2 }') && system network-addrpool-remove $DEL
```
It also envolves a quick restart of kube-API-server and kube-controller-manager and the existing user pods need to be restarted.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

involves

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link

@steven-webster steven-webster left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall really good Andre. I was looking for example usage and you've provided that, from bootstrap to runtime configuration

* Add blog post for StarlingX dual-stack (IPv4/IIPv6) support
----------
Signed-off-by: Andre Kantek <[email protected]>
Copy link
Collaborator

@ildikov ildikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Andre,

Thank you for submitting your article for the StarlingX blog, I think this is a great start!

The article current doesn't really read as a blog post. I love that it has a focus on how to configure dual-stack support in StarlingX, and I think that should be the main theme and content of the piece. I added some suggestions in line on how to reshape that text to fit that, including a suggested new title.

Please let me know what you think and if you have any questions.

Thanks and Best Regards,
Ildikó


The Kubernetes network can also receive dual-stack properties, allowing the pods to use IPv4 and/or IPv6 on its operations. It becomes available when the OAM, cluster-host, cluster-pod, and cluster-service networks are configured as dual-stack.

# Key Features and Considerations
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section looks and reads like a recap of the feature's documentation, which doesn't fit very well into a blog post. It would be better to remove this and add a pointer to the feature documentation in the 'Conclusion' section on the bottom of the article.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

id: category-A7fnZYrE1
---

StarlingX, a cloud platform designed for edge computing, now supports dual-stack functionality on its platform networks (OAM, management, cluster-host, cluster-pod, cluster-service, admin, storage, and multicast), enabling it to operate with both IPv4 and IPv6 L3 protocols. This enhanced capability offers greater flexibility and scalability for network deployments. Each platform network can be associated to two pools (one IPv4 and another IPv6). The order it is done defines the primary and secondary pool for that network.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be great to keep these first two paragraphs as a higher level introduction, which focuses on an overview of what the feature is and what it gives to users, why they should care about it. Here you can also add a note that this is a new feature in 10.0, and the rest of the article will focus on how to configure it in Kubernetes.

I would move the second half of this section over into the section that describes how to configure dual-stack in StarlingX 10.0:
"Each platform network can be associated to two pools (one IPv4 and another IPv6). The order it is done defines the primary and secondary pool for that network.

The Kubernetes network can also receive dual-stack properties, allowing the pods to use IPv4 and/or IPv6 on its operations. It becomes available when the OAM, cluster-host, cluster-pod, and cluster-service networks are configured as dual-stack."

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -0,0 +1,267 @@
---
templateKey: blog-post
title: Dual-Stack (IPv4/IPv6) Support in Starlingx
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
title: Dual-Stack (IPv4/IPv6) Support in Starlingx
title: A Tutorial to Configure Dual-Stack (IPv4/IPv6) Support in StarlingX 10.0

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


# Conclusion

StarlingX's dual-stack support provides enhanced flexibility and scalability for network deployments. By understanding the key features, configuration steps, and considerations outlined in this guide, you can effectively leverage dual-stack capabilities in your StarlingX environment
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
StarlingX's dual-stack support provides enhanced flexibility and scalability for network deployments. By understanding the key features, configuration steps, and considerations outlined in this guide, you can effectively leverage dual-stack capabilities in your StarlingX environment
StarlingX's dual-stack support provides enhanced flexibility and scalability for network deployments. By understanding the key features, configuration steps, and considerations outlined in this guide, you can effectively leverage dual-stack capabilities in your StarlingX environment.
# About StarlingX
For the complete list of updates and new features in StarlingX 10.0, check out the [release notes](https://docs.starlingx.io/releasenotes) and the [project documentation](https://docs.starlingx.io).
If you would like to learn more about the project and get involved check the [website](https://www.starlingx.io) for more information or [download the code](https://opendev.org/starlingx) and start to experiment with the platform. If you are already evaluating or using the software please fill out the [user survey](https://openinfrafoundation.formstack.com/forms/starlingx_user_survey) and help the community improve the project based on your feedback.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Collaborator

@ildikov ildikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @akantek-wr,

Thank you for sharing a new version of the article.

I think some of my previous comments were somewhat unclear, so I added a few suggested edits to the article to enhance its readability.

I also added a suggested publish date to the header. Depending on when the 10.0 release comes out, the publish date of the article might change.

Please let me know if you have any questions to the comments or the timeline to publish your article.

Thanks and Best Regards,
Ildikó

templateKey: blog-post
title: A Tutorial to Configure Dual-Stack (IPv4/IPv6) Support in StarlingX 10.0
author: Andre Kantek
date: 2024-08-12T01:32:05.627Z
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
date: 2024-08-12T01:32:05.627Z
date: 2025-01-14T01:32:05.627Z


StarlingX's dual-stack support provides enhanced flexibility and scalability for network deployments. By understanding the key features, configuration steps, and considerations outlined in this guide, you can effectively leverage dual-stack capabilities in your StarlingX environment.

For more information: https://docs.starlingx.io/system_configuration/kubernetes/dual-stack-support-318550fd91b5.html
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For more information: https://docs.starlingx.io/system_configuration/kubernetes/dual-stack-support-318550fd91b5.html
For more information please check out the [dual-stack feature section](https://docs.starlingx.io/system_configuration/kubernetes/dual-stack-support-318550fd91b5.html) in the StarlingX project documentation.

Copy link
Collaborator

@ildikov ildikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Andre,

Thank you for the fixes.

The blog post looks great now overall. I found a few typos and added those and some additional suggestions in line to improve readability.

Thanks,
Ildikó

id: category-A7fnZYrE1
---

StarlingX, a cloud platform designed for edge computing, now supports dual-stack functionality on its platform networks (OAM, management, cluster-host, cluster-pod, cluster-service, admin, storage, and multicast), enabling it to operate with both IPv4 and IPv6 L3 protocols. This enhanced capability offers greater flexibility and scalability for network deployments by allowing the user's kubernetes applications to operate simulteaneoulsy on both address families if needed.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
StarlingX, a cloud platform designed for edge computing, now supports dual-stack functionality on its platform networks (OAM, management, cluster-host, cluster-pod, cluster-service, admin, storage, and multicast), enabling it to operate with both IPv4 and IPv6 L3 protocols. This enhanced capability offers greater flexibility and scalability for network deployments by allowing the user's kubernetes applications to operate simulteaneoulsy on both address families if needed.
StarlingX, an open source distributed cloud platform, now supports dual-stack functionality on its platform networks (OAM, management, cluster-host, cluster-pod, cluster-service, admin, storage, and multicast), enabling it to operate with both IPv4 and IPv6 L3 protocols. This enhanced capability offers greater flexibility and scalability for network deployments by allowing the user's Kubernetes applications to operate simultaneously on both address families if needed.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Distributed Cloud Operations

The Distributed Cloud architecture is what differentiates StarloingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setuip is used, all operational communication between the system controller and subclouds uses the primary address pool.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Distributed Cloud architecture is what differentiates StarloingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setuip is used, all operational communication between the system controller and subclouds uses the primary address pool.
The Distributed Cloud architecture is what differentiates StarlingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setup is used, all operational communication between the system controller and subclouds uses the primary address pool.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


The Distributed Cloud architecture is what differentiates StarloingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setuip is used, all operational communication between the system controller and subclouds uses the primary address pool.

It is also important to note, that the System Controller and subclouds can operate in different network modes, however, they must share the same primary address family in the OAM and management networks (for subclouds this can be OAM and admin networks). The Geo redundancy feature also uses the primary pools to communicate.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It is also important to note, that the System Controller and subclouds can operate in different network modes, however, they must share the same primary address family in the OAM and management networks (for subclouds this can be OAM and admin networks). The Geo redundancy feature also uses the primary pools to communicate.
It is also important to note, that the System Controller and subclouds can operate in different network modes, however, they must share the same primary address family in the OAM and management networks (for subclouds this can be OAM and admin networks). The geo-redundancy feature also uses the primary pools to communicate.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Kubernetes Configuration

When dual-stack mode is used with Kubernetes, the OAM, cluster-host, cluster-service, and cluster-pod networks must be configured for dual-stack support. And be mindful that runtime changes trigger quick restarts for the kube-API-server and kube-controller-manager pods.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When dual-stack mode is used with Kubernetes, the OAM, cluster-host, cluster-service, and cluster-pod networks must be configured for dual-stack support. And be mindful that runtime changes trigger quick restarts for the kube-API-server and kube-controller-manager pods.
When dual-stack mode is used with Kubernetes, the OAM, cluster-host, cluster-service, and cluster-pod networks must be configured for dual-stack support. And be mindful that runtime changes trigger quick restarts for the kube-apiserver and kube-controller-manager pods.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Runtime Configuration

You can also update a running system to use dual-stack, follow the steps outlined in the guide, which include adding address pools and associating them with networks. In the scenario of reverting to single-stack configuration, you will need to remove the network association with the address pool.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You can also update a running system to use dual-stack, follow the steps outlined in the guide, which include adding address pools and associating them with networks. In the scenario of reverting to single-stack configuration, you will need to remove the network association with the address pool.
You can also update a running system to use dual-stack, follow the steps outlined in the [documentation](https://docs.starlingx.io/system_configuration/kubernetes/dual-stack-support-318550fd91b5.html), which include adding address pools and associating them with networks. In the scenario of reverting to single-stack configuration, you will need to remove the network association with the address pool.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

```
For AIO-SX systems the step above isn't necessary, as OAM reconfiguration is done at runtime.

The next step is to add the cluster pools and associate them with its networks:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The next step is to add the cluster pools and associate them with its networks:
The next step is to add the cluster pools and associate them with their networks:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

system network-addrpool-assign cluster-pod cluster-pod-ipv4
system network-addrpool-assign cluster-host cluster-host-ipv4
```
It will trigger a runtime Kubernetes and Calico configuration to make dual-stack available. This involves a quick restart of the kube-API-server and kube-controller-manager pods on both controllers. Pods that need to use the new cluster-pod network and already exist prior to this configuration will require a restart to gain the new addresses.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It will trigger a runtime Kubernetes and Calico configuration to make dual-stack available. This involves a quick restart of the kube-API-server and kube-controller-manager pods on both controllers. Pods that need to use the new cluster-pod network and already exist prior to this configuration will require a restart to gain the new addresses.
This operation will trigger a runtime Kubernetes and Calico configuration update to make dual-stack available. This involves a quick restart of the kube-apiserver and kube-controller-manager pods on both controllers. Pods that need to use the new cluster-pod network and already exist prior to this configuration change, will require a restart to gain the new addresses.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

DEL=$(system network-addrpool-list | awk '$6 == "cluster-service-ipv4" { print $2 }') && system network-addrpool-remove $DEL
DEL=$(system network-addrpool-list | awk '$6 == "cluster-host-ipv4" { print $2 }') && system network-addrpool-remove $DEL
```
It also involves a quick restart of kube-API-server and kube-controller-manager and the existing user pods need to be restarted.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It also involves a quick restart of kube-API-server and kube-controller-manager and the existing user pods need to be restarted.
It also involves a quick restart of kube-apiserver and kube-controller-manager and the existing user pods need to be restarted.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Kubernetes deployment example

A small sample to create a deployment to use the dual-stack configuration, there are no special parameters
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A small sample to create a deployment to use the dual-stack configuration, there are no special parameters
Below you can see a small sample to create a deployment to use the dual-stack configuration, there are no special parameters:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

lo UNKNOWN 127.0.0.1/8 ::1/128
eth0@if18 UP 172.16.192.65/32 fd03::8e22:765f:6121:eb61/128 fe80::c024:64ff:fe41:fd3a/64
```
The service requires the dual-stack information:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The service requires the dual-stack information:
The service requires the dual-stack information, like the example here:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Collaborator

@ildikov ildikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Andre,

Thank you for the fixes. I spotted a few more typos and also added a planned publish date now that we have 10.0 available.

Best Regards,
Ildikó

templateKey: blog-post
title: A Tutorial to Configure Dual-Stack (IPv4/IPv6) Support in StarlingX 10.0
author: Andre Kantek
date: 2025-01-14T01:32:05.627Z
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
date: 2025-01-14T01:32:05.627Z
date: 2025-05-06T01:32:05.627Z

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Address Pool Management

As the feature’s name suggests, two address pools are required for dual-stack operation, with the first one linked to the network at creation. This also means that the primary pool cannot be removed later, while removing the second pool can transform the system into a single-stack mode. As the dual-stack support is still new in the platform, there are some additional limitations to this oncfiguration options, for example, the pxeboot network currently only supports IPv4.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
As the feature’s name suggests, two address pools are required for dual-stack operation, with the first one linked to the network at creation. This also means that the primary pool cannot be removed later, while removing the second pool can transform the system into a single-stack mode. As the dual-stack support is still new in the platform, there are some additional limitations to this oncfiguration options, for example, the pxeboot network currently only supports IPv4.
As the feature’s name suggests, two address pools are required for dual-stack operation, with the first one linked to the network at creation. This also means that the primary pool cannot be removed later, while removing the second pool can transform the system into a single-stack mode. As the dual-stack support is still new in the platform, there are some additional limitations to this configuration option, for example, the pxeboot network currently only supports IPv4.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


## Distributed Cloud Operations

The Distributed Cloud architecture is what differentiates StarlingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setup is used, all operational communication between the system controller and subclouds uses the primary address pool.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Distributed Cloud architecture is what differentiates StarlingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to supports it. When this setup is used, all operational communication between the system controller and subclouds uses the primary address pool.
The Distributed Cloud architecture is what differentiates StarlingX from most other cloud platforms, and therefore it has been crucial that it supports the dual-stack configuration option as well. Subclouds can be installed in dual-stack mode if their version is new enough to support it. When this setup is used, all operational communication between the system controller and subclouds uses the primary address pool.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


Each platform network can be associated to two pools (one IPv4 and another IPv6). The order it is done defines the primary and secondary pool for that network.

The Kubernetes network can also receive dual-stack properties, allowing the pods to use IPv4 and/or IPv6 on its operations. It becomes available when the OAM, cluster-host, cluster-pod, and cluster-service networks are configured as dual-stack.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one doesn't seem to be fixed.


This example is considering an AIO-DX installed as IPv6 single-stack.

The list of created networks show the primary pool ID:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The list of created networks show the primary pool ID:
The list of created networks shows the primary pool ID:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

| 6 | f6349...b | cluster-pod | cluster-pod | False | c311c1d6-8...a | IPv6 |
+----+------...--+-----------------+-----------------+---------+-----------...--+---------------------+
```
The relationship between address pool and network is also show with `network-addrpool-list`:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The relationship between address pool and network is also show with `network-addrpool-list`:
The relationship between address pool and network is also shown with `network-addrpool-list`:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

| 765cc...7 | pxeboot | 169.254.202.0 | 24 | random | ['169.254.202.1-169.254.202.254'] | 16... |
+------...--+-----------------------------+---------------+--------+--------+---------------------------------------+---...-+
```
The first step is to add the secondary OAM address pool and associate to the network
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The first step is to add the secondary OAM address pool and associate to the network
The first step is to add the secondary OAM address pool and associate it to the network

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@akantek-wr
Copy link
Author

@ildikov
You mentioned that #281 (comment) is not fixed
Not clear to me what you mean by that

@ildikov
Copy link
Collaborator

ildikov commented Mar 3, 2025

I was suggesting to change 'its operations' to 'their operations' in an earlier iteration. You indicated that the change was done, but the latest preview still shows the original version of the text, so it doesn't seem like the suggestion was applied.

The full original sentence is: "The Kubernetes network can also receive dual-stack properties, allowing the pods to use IPv4 and/or IPv6 on its operations."
The suggested new sentence is: "The Kubernetes network can also receive dual-stack properties, allowing the pods to use IPv4 and/or IPv6 on their operations."

Does this clarify?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants