Skip to content

OpenStack Client Provider Installation#

This guide provides detailed instructions for installing the OpenStack Client Provider.

Prerequisites#

Before you deploy the OpenStack Client Provider, ensure that:

  • The Services application is installed
  • The Cloud Connect Core and OpenStack plugin are installed when you want the provider to correlate Connect-managed networks
  • You have OpenStack credentials with the Nova and Neutron visibility that you need

Installation Steps#

To deploy the OpenStack Client Provider, complete the following tasks:

  1. Deploy the OpenStack Client Provider app
  2. Create a Secret for OpenStack credentials
  3. Create an OpenStackClientProviderInstance

Step 1: OpenStack Client Provider App Deployment#

The OpenStack Client Provider is an application in the EDA app ecosystem. You can install it from the EDA Store UI.

Installation Using EDA Store UI#

  1. Navigate to the EDA Store in the EDA UI
  2. Locate the OpenStack Client Provider app
  3. Click Install
  4. Complete the installation

Installation Using Kubernetes API#

If you prefer installing the app using the Kubernetes API, you can do so by creating the following Workflow resource:

apiVersion: appstore.eda.nokia.com/v1
kind: AppInstaller
metadata:
  name: openstack-client-provider
  namespace: eda-system
spec:
  operation: install
  apps:
    - appId: openstack-client-provider.eda.nokia.com
      catalog: eda-catalog-builtin-apps
      version:
        type: alias
        value: latest
kubectl apply -f - <<EOF
apiVersion: appstore.eda.nokia.com/v1
kind: AppInstaller
metadata:
  name: openstack-client-provider
  namespace: eda-system
spec:
  operation: install
  apps:
    - appId: openstack-client-provider.eda.nokia.com
      catalog: eda-catalog-builtin-apps
      version:
        type: alias
        value: latest

EOF

Step 2: Create a Secret for OpenStack Credentials#

Create a Kubernetes Secret in the eda-system namespace.

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: my-os-creds
  namespace: eda-system
  labels:
    "eda.nokia.com/backup": "true"
data:
  username: YWRtaW4K # base64 encoded
  password: YWRtaW4K # base64 encoded
  user_domain_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here
  project_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here
  project_domain_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here
echo -n myUsernameOrPassword | base64
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: my-os-creds
  namespace: eda-system
  labels:
    "eda.nokia.com/backup": "true"
data:
  username: YWRtaW4K # base64 encoded
  password: YWRtaW4K # base64 encoded
  user_domain_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here
  project_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here
  project_domain_name: YWRtaW4K # Optional, can also be set in spec; base64 encoded here

EOF
Base64 encoding

Use the following command to base64 encode your username and password:

echo -n myUsernameOrPassword | base64

mandatory label

The secrets used by EDA must have the eda.nokia.com/backup: "true" label.

The Secret can use username / password keys, or the OpenStack OS_USERNAME / OS_PASSWORD keys. Alternatively, application credentials use OS_APPLICATION_CREDENTIAL_* keys, or the equivalent lowercase names. Additionally, domain and project scope can come from the Secret or from fields on the instance. For more information about OpenStack authentication see the upstream documentation.

Step 3: Create the OpenStack Client Provider Instance#

Create the OpenStackClientProviderInstance in the EDA UI under System Administration > Client Providers > OpenStack Client Providers.

You can also create the same resource using the Kubernetes API. Replace the example values with values for your deployment.

apiVersion: openstack-client-provider.eda.nokia.com/v1alpha1
kind: OpenStackClientProviderInstance
metadata:
  name: my-openstack-client-provider # A unique name for the instance
  namespace: eda-system # The EDA core namespace
spec:
  namespace: eda # The namespace that holds the fabric, BridgeDomains, and client table
  authURL: https://keystone.example.com:5000/v3 # The Keystone authentication URL
  authSecretRef: my-os-creds # Credentials are hosted in a Secret in spec.namespace
  regionName: RegionOne # The OpenStack region
  identityInterface: public # Keystone endpoint from the service catalog: public, internal, or admin
  sync:
    mode: Polling
    polling:
      fullSyncIntervalSeconds: 30 # How often the instance polls OpenStack
kubectl apply -f - <<EOF
apiVersion: openstack-client-provider.eda.nokia.com/v1alpha1
kind: OpenStackClientProviderInstance
metadata:
  name: my-openstack-client-provider # A unique name for the instance
  namespace: eda-system # The EDA core namespace
spec:
  namespace: eda # The namespace that holds the fabric, BridgeDomains, and client table
  authURL: https://keystone.example.com:5000/v3 # The Keystone authentication URL
  authSecretRef: my-os-creds # Credentials are hosted in a Secret in spec.namespace
  regionName: RegionOne # The OpenStack region
  identityInterface: public # Keystone endpoint from the service catalog: public, internal, or admin
  sync:
    mode: Polling
    polling:
      fullSyncIntervalSeconds: 30 # How often the instance polls OpenStack

EOF
Namespaces

Create the OpenStackClientProviderInstance in eda-system. Set spec.namespace to the namespace that holds the fabric where the OpenStack resources are created on.

Configuration Parameters#

The OpenStackClientProviderInstance resource supports the following fields:

Field Description Required
name Name of the instance in EDA. Yes
namespace Namespace that holds the fabric where OpenStack resources are scheduled on. Yes
authURL Keystone authentication URL. Yes
authSecretRef Name of the Kubernetes Secret in spec.namespace that contains OpenStack credentials. Yes
regionName OpenStack region name. Yes
sync.mode Sync mode. The current release supports Polling only. Yes
sync.polling.fullSyncIntervalSeconds Interval in seconds for a full inventory poll. Yes
identityInterface Keystone catalog interface: public (default), internal, or admin. No
domainName Domain name that contains the user. No
domainID Domain ID that contains the user. No
projectName Project-level authentication scope (name). No
projectID Project-level authentication scope (ID). No

Post-Installation Verification#

After you create the instance, verify that the operator pod is running:

kubectl get pods -n eda-system | grep oscp

Check the instance status:

kubectl get openstackclientproviderinstances -n eda-system

The status phase and message show whether the last poll reached Keystone, Nova, and Neutron.

Next Steps#

After installation, proceed to:

  • Check the .namespace.clienttables.networks client table for OpenStack entries.