This repository contains implementations of Power VS Provider for the OpenShift machine-api.
This provider runs as a machine-controller deployed by the machine-api-operator
The Dockerfiles use as builder
in the FROM
instruction which is not currently supported
by the RH's docker fork (see kubernetes-sigs/kubebuilder#268).
One needs to run the imagebuilder
command instead of the docker build
.
Note: this info is RH only, it needs to be backported every time the README.md
is synced with the upstream one.
-
Deploying the cluster
Use any existing mechanism for deploying the kubernetes cluster, e.g: kubeadm https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/
-
Deploying machine API controllers
For development purposes the powervs machine controller itself will run out of the machine API stack. Otherwise, docker images needs to be built, pushed into a docker registry and deployed within the stack.
To deploy the stack:
kustomize build config | kubectl apply -f -
-
Deploy secret with Power VS credentials
Power VS nodeupdate controller assumes existence of a secret file:
apiVersion: v1 kind: Secret metadata: name: powervs-credentials namespace: openshift-machine-api type: Opaque data: ibmcloud_api_key: FILLIN
You can use
examples/render-powervs-secrets.sh
script to generate the secret:# Set the IBMCLOUD_API_KEY with a proper IBM Cloud API Key $ IBMCLOUD_API_KEY=<API_KEY> ./examples/render-powervs-secrets.sh examples/addons.yaml | kubectl apply -f -
Go to How to create IBM Cloud API Key for creating API Key
-
Test by creating example machine
# Update the relevant fields like serviceInstanceID, imageID, subnets, keyName etc.. $ kubectl create -f examples/machine-with-user-data.yaml $ kubectl create -f examples/userdata.yml
-
Tear down machine-controller
Deployed machine API plane (
machine-api-controllers
deployment) is (among other controllers) runningmachine-controller
. In order to run locally built one, simply editmachine-api-controllers
deployment and removemachine-controller
container from it. -
Build and run powervs actuator from outside the cluster
$ go build -o bin/machine-controller-manager github.com/openshift/machine-api-provider-powervs/cmd/manager
$ .bin/machine-controller-manager --kubeconfig ~/.kube/config --logtostderr -v 5 -alsologtostderr
If running in container with
podman
, or locally withoutdocker
installed, and encountering issues, see hacking-guide.
https://cloud.ibm.com/docs/account?topic=account-userapikey&locale=en#create_user_key