OpenShift 4 - 为 OpenShift 托管集群配置用户认证(视频)

本文详细介绍了如何在OpenShift4.14及更高版本中,结合ACM2.9和AWS环境创建及管理托管集群。内容涵盖了使用HyperShift部署、HTPasswd用户认证配置、访问权限管理以及通过Ansible进行自动化操作。此外,还提供了删除集群、生成KUBECONFIG文件的步骤,并讨论了不同用户角色的权限差异。
摘要由CSDN通过智能技术生成

OpenShift / RHEL / DevSecOps / Ansible 汇总目录
说明:本文已经在 OpenShift 4.14 + ACM 2.9 + AWS 环境中验证

本文是《OpenShift 4 - 用 HyperShift 实现以“托管集群”方式部署运行 OpenShift 集群(视频)》的后续。

托管集群的管理模式

由于 OpenShift 托管集群的 “控制平面” 是运行在 “管理集群” 中对应的命名空间里,因此 “控制集群” 的一部分运维管理是由 “管理集群” 的管理员完成的。

  • “管理集群”的管理员负责创建、升级所有“托管集群”环境、手动扩展“托管集群”的节点、配置“托管集群”的认证方式等。
  • “托管集群”的管理员负责管理管理自己集群内部资源的管理,例如分配所属“托管集群”的用户的访问权限、安装 Operator 等。
  • “托管集群”的一般用户负责部署应用资源,监控应用运行。
    在这里插入图片描述
    本文为演示方便,将在 “管理集群” 上为一个 “托管集群” 配置 HTPasswd 认证方式。正式环境可以配置例如 RedHat SSO 或其他更正式的用户认证方式。

创建托管集群

  1. 执行命令可以创建一个名为 devops 的托管集群。
$ CLUSTER_NAME=devops
$ hcp create cluster aws \
  --name ${CLUSTER_NAME} \
  --infra-id ${CLUSTER_NAME} \
  --region us-west-1 \
  --zones us-west-1b,us-west-1c \
  --instance-type m5a.large \
  --root-volume-type gp3 \
  --root-volume-size 100 \
  --etcd-storage-class gp3-csi \
  --control-plane-availability-policy SingleReplica \
  --infra-availability-policy SingleReplica \
  --network-type OVNKubernetes \
  --release-image quay.io/openshift-release-dev/ocp-release:4.13.2-x86_64 \
  --node-pool-replicas 1 \
  --namespace local-cluster \
  --secret-creds aws-credentials \
  --auto-repair \
  --generate-ssh
  1. 在托管集群完成创建后,可以查看到登录该托管集群的方法,包括 API 地址、管理员和密码。
    在这里插入图片描述

  2. (可选)可执行以下命令删除托管集群。

$ hcp destroy cluster aws --name ${CLUSTER_NAME} --secret-creds aws-credentials --namespace local-cluster
  1. 生成访问集群所使用的 KUBECONFIG 文件。
$ oc get secret ${CLUSTER_NAME}-kubeadmin-password -n local-cluster --template='{{ .data.password }}' | base64 -d > $HOME/.kube/${CLUSTER_NAME}.kubeadmin-password
$ oc get secret ${CLUSTER_NAME}-admin-kubeconfig -n local-cluster --template='{{ .data.kubeconfig }}' | base64 -d > $HOME/.kube/${CLUSTER_NAME}-kubeconfig

配置基于 HTPasswd 的用户认证

  1. 执行命令创建一个包含用户名和密码的文件,然后再基于该文件在 local-cluster 项目中生成 Secret 对象 ${CLUSTER_NAME}-htpass-secret。
$ htpasswd -b -c users.htpasswd user1 password
$ htpasswd -b users.htpasswd user2 password
$ oc create secret generic ${CLUSTER_NAME}-htpass-secret --from-file=htpasswd=users.htpasswd -n local-cluster
  1. 执行名创建基于 HTPasswd 的 identityProvider 配置 文件,它使用了 ${CLUSTER_NAME}-htpass-secret 对象作为认证源。
$ cat << EOF > patch.yaml
spec:
  configuration:
    oauth:
      identityProviders:
        - htpasswd:
            fileData:
              name: ${CLUSTER_NAME}-htpass-secret
          mappingMethod: claim
          name: my_htpasswd_provider
          type: HTPasswd
EOF
  1. 备份 ${CLUSTER_NAME}-kubeadmin-password 中的密码,因为下一步会自动删除这个 secret 对象。
  2. 执行命令,使用 patch.yaml 更新名为 ${CLUSTER_NAME} 的 hostedcluster 配置。
$ oc patch hostedcluster ${CLUSTER_NAME} -n local-cluster --type merge --patch-file patch.yaml
  1. 查看 oauth-openshift 相关的 pod 的状态,更新完。
$ oc get pod -n local-cluster-${CLUSTER_NAME} | grep oauth-openshift -w
oauth-openshift-757f596578-xf5m8                      2/2     Running     0          31s

配置托管集群用户的访问权限

  1. 执行获得使用 kubeadmin 用户访问托管集群的 kubeconfig 文件,并将其设到 KUBECONFIG 环境变量。
$ KUBECONFIG=$HOME/.kube/${CLUSTER_NAME}-kubeconfig
  1. 执行命令,设置托管集群的 user1 用户的访问权限。说明:可以显示声明使用的 kubeconfig 参数。
$ oc adm policy add-cluster-role-to-user cluster-admin user1 --kubeconfig=$HOME/.kube/${CLUSTER_NAME}-kubeconfig
  1. 执行命令退出托管管集群。
$ unset KUBECONFIG

访问验证

  1. 执行命令,使用 user1 或 user2 用户登录托管集群。
$ HOSTED_CLUSTER_API=https://$(oc get hostedcluster -n local-cluster ${CLUSTER_NAME} -ojsonpath={.status.controlPlaneEndpoint.host}):6443
$ oc login $HOSTED_CLUSTER_API -u user1 -p password
  1. 使用 user1 或 user2 用户登录托管集群控制台。由于 user1 已是集群管理员,他可以看到集群所有资源;而 user2 是一般用户,他只能看到下图中集群有限的资源。
    在这里插入图片描述

视频

演示视频

参考

https://hypershift-docs.netlify.app/how-to/cluster-configuration/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值