This procedure uses a dedicated management machine that can access both the primary and secondary Kubernetes clusters.
- Get the kubeconfig file from both the primary and secondary sites.
-
Specify the paths to the files for the environment variables.
- Specify the kubeconfig file paths to the primary and secondary sites.
# KUBECONFIG_P=/<directory-containing-the-file>/primary-kubeconfig # KUBECONFIG_S=/<directory-containing-the-file>/secondary-kubeconfig
- Specify the Secret file paths to the primary and secondary sites. These files are supposed to be created in later steps.
# SECRET_KUBECONFIG_P=/<directory-containing-the-file>/primary-kubeconfig-secret.yaml # SECRET_KUBECONFIG_S=/<directory-containing-the-file>/secondary-kubeconfig-secret.yaml
- Specify the kubeconfig file paths to the primary and secondary sites.
-
Clone https://github.com/hitachi-vantara/csi-operator-hitachi, and then obtain the YAML
file from the target version of Replication Plug-in for Containers.
The YAML file is stored in csi-operator-hitachi/hrpc/<HRPC-version>/yaml.
# git clone https://github.com/hitachi-vantara/csi-operator-hitachi # cd csi-operator-hitachi/hrpc/<HRPC-version>/yaml
- Create a Secret manifest file with the secondary kubeconfig information to access the secondary Kubernetes cluster from Replication Plug-in for Containers running in the primary Kubernetes cluster. For reference, see the remote-kubeconfig-sample.yaml file.
- Obtain the kubeconfig file by encoding it in Base64.
# cat ${KUBECONFIG_S} | base64 -w 0 - Edit the Secret manifest file.
# vi ${SECRET_KUBECONFIG_S} apiVersion: v1 kind: Secret metadata: name: hspc-replication-operator-remote-kubeconfig namespace: hspc-replication-operator-system type: Opaque data: remote-kubeconfig: <base64-encoded-secondary-kubeconfig>
- Obtain the kubeconfig file by encoding it in Base64.
- Create a Secret manifest file the with the primary kubeconfig information to
access the primary Kubernetes cluster from Replication Plug-in for Containers running in the secondary Kubernetes cluster. For reference, see the
remote-kubeconfig-sample.yaml file.
- Obtain the kubeconfig file by encoding it in Base64.
# cat ${KUBECONFIG_P} | base64 -w 0 -
Edit the Secret manifest file.
# vi ${SECRET_KUBECONFIG_P} apiVersion: v1 kind: Secret metadata: name: hspc-replication-operator-remote-kubeconfig namespace: hspc-replication-operator-system type: Opaque data: remote-kubeconfig: <base64-encoded-primary-kubeconfig>
- Obtain the kubeconfig file by encoding it in Base64.
- Modify the storage-secrets-sample.yaml file to specify the storage system
information.
# vi storage-secrets-sample.yaml apiVersion: v1 kind: Secret metadata: name: hspc-replication-operator-storage-secrets namespace: hspc-replication-operator-system type: Opaque stringData: storage-secrets.yaml: |- storages: - serial: 54321 # (1) url: https://172.16.1.1 # (2) user: UserPrimary # (3) password: PasswordPrimary # (4) journal: 1 # (5) - serial: 400100 # (6) url: https://172.16.1.2 # (7) user: UserSecondary # (8) password: PasswordSecondary # (9) journal: 2 # (10)
This file includes information on the storage system that is used by the primary and secondary sites.Legend:
- (1) and (6) Storage system serial number for primary and secondary site.
- (2) and (7) Storage URL.
Use the IP address of the SVP for the VSP 5000 series storage systems.
Use the IP address of the storage controller for the VSP E series, VSP F350, F370, F700, F900, and VSP G350, G370, G700, G900 storage systems.
Use the service IP address for the VSP One B20 series storage systems.
- (3) and (8) Username for the primary and secondary storage systems. The user must belong to the built-in storage administrator (View & Modify) user group (the same as Storage Plug-in for Containers).
- (4) and (9) Password for the username.
- (5) and (10) Journal ID for Universal Replicator.
- Create namespaces in the primary and secondary sites. Use the same manifest file in primary and
secondary sites.
# KUBECONFIG=${KUBECONFIG_P} kubectl create -f hspc-replication-operator-namespace.yaml # KUBECONFIG=${KUBECONFIG_S} kubectl create -f hspc-replication-operator-namespace.yaml - Create Secrets containing kubeconfig information in primary and secondary sites. Use the different manifest files in primary and secondary sites.
# KUBECONFIG=${KUBECONFIG_P} kubectl create -f ${SECRET_KUBECONFIG_S} # KUBECONFIG=${KUBECONFIG_S} kubectl create -f ${SECRET_KUBECONFIG_P} - Create Secrets containing storage system information in primary and secondary sites. Use the same manifest file in primary and secondary sites.
# KUBECONFIG=${KUBECONFIG_P} kubectl create -f storage-secrets-sample.yaml # KUBECONFIG=${KUBECONFIG_S} kubectl create -f storage-secrets-sample.yaml - Create Replication Plug-in for Containers in primary and secondary sites. Use the same manifest file for both
the primary and secondary sites.
# KUBECONFIG=${KUBECONFIG_P} kubectl create -f hspc-replication-operator.yaml # KUBECONFIG=${KUBECONFIG_S} kubectl create -f hspc-replication-operator.yamlNote: If you find any misconfigurations in Secrets, delete the replication controller first, and then modify Secrets. The replication controller reads Secrets when it starts. - Confirm that Replication Plug-in for Containers are running in both the primary and secondary sites.
# KUBECONFIG=${KUBECONFIG_P} kubectl get pods -n hspc-replication-operator-system # KUBECONFIG=${KUBECONFIG_S} kubectl get pods -n hspc-replication-operator-system