《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》
说明:本文已经在 OpenShift 4.13 + ACM 2.8 + AWS 环境中验证
本文是《OpenShift 4 - 用 HyperShift 实现以“托管集群”方式部署运行 OpenShift 集群(视频)》的后续。
文章目录
- 托管集群的管理模式
- 创建托管集群
- 配置基于 HTPasswd 的用户认证
- 配置托管用户的访问权限
- 验证
- 视频
- 参考
托管集群的管理模式
由于 OpenShift 托管集群的 “控制平面” 是运行在 “管理集群” 中对应的命名空间里,因此 “控制集群” 的一部分运维管理是由 “管理集群” 的管理员完成的。
- “管理集群”的管理员负责创建、升级所有“托管集群”环境、手动扩展“托管集群”的节点、配置“托管集群”的认证方式等。
- “托管集群”的管理员负责管理管理自己集群内部资源的管理,例如分配所属“托管集群”的用户的访问权限、安装 Operator 等。
- “托管集群”的一般用户负责部署应用资源,监控应用运行。
本文为演示方便,将在 “管理集群” 上为一个 “托管集群” 配置 HTPasswd 认证方式。正式环境可以配置例如 RedHat SSO 或其他更正式的用户认证方式。
创建托管集群
- 执行命令可以创建一个名为 devops 的托管集群。
$ hypershift create cluster aws \
--name devops \
--infra-id devops \
--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
-
在托管集群完成创建后,可以查看到登录该托管集群的方法,包括 API 地址、管理员和密码。
-
可执行以下命令删除托管集群。
$ hypershift destroy cluster aws --name devops --secret-creds aws-credentials --namespace local-cluster
配置基于 HTPasswd 的用户认证
- 执行命令创建一个包含用户名和密码的文件,然后再基于该文件在 local-cluster 项目中生成 Secret 对象 devops-htpass-secret。
$ htpasswd -b -c users.htpasswd user1 password
$ htpasswd -b users.htpasswd user2 password
$ oc create secret generic devops-htpass-secret --from-file=htpasswd=users.htpasswd -n local-cluster
- 执行名创建基于 HTPasswd 的 identityProvider 配置 文件,它使用了 devops-htpass-secret 对象作为认证源。
$ cat << EOF > patch.yaml
spec:
configuration:
oauth:
identityProviders:
- htpasswd:
fileData:
name: devops-htpass-secret
mappingMethod: claim
name: my_htpasswd_provider
type: HTPasswd
EOF
- 执行命令,使用 patch.yaml 更新名为 devops 的 hostedcluster 配置。
$ oc patch hostedcluster devops -n local-cluster --type merge --patch-file patch.yaml
- 查看 oauth-openshift 相关的 pod 的状态,更新完。
$ oc get pod -n local-cluster-devops | grep oauth-openshift -w
oauth-openshift-757f596578-xf5m8 2/2 Running 0 31s
配置托管用户的访问权限
- 执行获得使用 kubeadmin 用户访问托管集群的 kubeconfig 文件,并将其设到 KUBECONFIG 环境变量。
$ oc get secret devops-kubeadmin-password -n local-cluster --template='{{ .data.password }}' | base64 -d > $HOME/.kube/devops.kubeadmin-password
$ oc get secret devops-admin-kubeconfig -n local-cluster --template='{{ .data.kubeconfig }}' | base64 -d > $HOME/.kube/devops-kubeconfig
$ KUBECONFIG=$HOME/.kube/devops-kubeconfi
- 执行命令,设置托管集群的 user1 用户的访问权限。
$ oc adm policy add-cluster-role-to-user cluster-admin user1
- 执行命令退出托管管集群。
$ unset KUBECONFIG
验证
- 执行命令,使用 user1 或 user2 用户登录托管集群。
$ oc login <HOSTED_CLUSTER_API> -u user1 -p password
视频
演示视频
参考
https://hypershift-docs.netlify.app/how-to/cluster-configuration/