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 BaremetalHost annotation-based fencing #286

Merged

Conversation

lmiccini
Copy link
Contributor

@lmiccini lmiccini commented Oct 12, 2024

This commit adds one more way of fencing a compute node, using baremetal apis (metal3).

It works by adding a reboot annotation, see:
https://book.metal3.io/bmo/reboot_annotation.html

{"annotations":{"reboot.metal3.io/iha":"{"mode": "hard"}"}}

After the evacuation is completed this annotation is removed and the compute host powered back on.

fencing.yaml should contain something like:

  FencingConfig:
    edpm-compute-1:
      agent: bmh
      token: <long-token>
      host: edpm-compute-1
      namespace: openstack

The token is obtained with something like the following:

kubectl create serviceaccount k8sadmin -n kube-system 
kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin 
kubectl -n kube-system describe secret $(sudo kubectl -n kube-system get secret | (grep k8sadmin || echo "$_") | awk '{print $1}') | grep token: | awk '{print $2}'

Customers should create a serviceaccount that has enough rights to perform operations on the baremetalhost resources instead of using a cluster-admin.

This commit adds one more way of fencing a compute node,
using baremetal apis (metal3).

It works by adding a reboot annotation, see:
https://book.metal3.io/bmo/reboot_annotation.html

{"annotations":{"reboot.metal3.io/iha":"{\"mode\": \"hard\"}"}}

After the evacuation is completed this annotation is removed and
the compute host powered back on.

fencing.yaml should contain something like:

  FencingConfig:
    edpm-compute-1: [hostname as known by nova]
      agent: bmh
      namespace: openstack [namespace of the bmh]
      token: <long-token>
      host: edpm-compute-1 [name of the bmh resource]

The token is obtained with something like the following:

kubectl create serviceaccount k8sadmin -n kube-system
kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
kubectl -n kube-system describe secret $(sudo kubectl -n kube-system get secret | (grep k8sadmin || echo "$_") | awk '{print $1}') | grep token: | awk '{print $2}'

Customers should create a serviceaccount that has enough rights to
perform operations on the baremetalhost resources instead of using
a cluster-admin.
Copy link
Contributor

openshift-ci bot commented Oct 14, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: lmiccini, olliewalsh

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot bot merged commit bf7d886 into openstack-k8s-operators:main Oct 14, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants