K8S----RBAC

本文详细介绍了Kubernetes中的RBAC授权机制,包括Role和ClusterRole的区别,RoleBinding与ClusterRoleBinding的作用,以及如何将Role与RoleBinding绑定到ServiceAccount。重点阐述了在不同命名空间下进行绑定会产生的权限效果,强调了命名空间一致性对于权限授予的重要性。

一、角色、绑定、用户

1、 Role 与ClusterRole

1、Role 总是要在一个命名空间中设置权限,当需要创建一个Role的时候必须指定命名空间;
2、ClusterRole 是非命名空间范围的,不受命名空间局限

2 、RoleBinding 与ClusterRoleBinding

1、RoleBinding 是受命名空间限制的
2、ClusterRoleBinding 不受命名空间限制

3、用户与serviceaccount

1、serviceaccount是受命名空间限制的
2、用户不受命名空间限制

二、RBAC授权–通过rolebinding将role绑定到 serviceaccount

1、将role 通过rolebinding 绑定到 serviceaccount,因为这三者都是命名空间限制的,所以此绑定存在以下三种情况,并且有不同的结果。

### Kubernetes 上部署 GitLab 的最佳实践 在 Kubernetes (K8s) 平台上部署 GitLab 是一种常见的需求,尤其是在微服务架构 CI/CD 流程中。以下是关于如何实现这一目标的最佳实践。 #### 1. 使用 Helm Chart 部署 GitLab Helm 是 K8s 生态中最流行的包管理工具之一,它提供了官方支持的 GitLab Helm Charts[^5]。通过这些 Charts 可以快速完成 GitLab 的安装与配置。 ```bash helm repo add gitlab https://charts.gitlab.io/ helm install my-gitlab gitlab/gitlab \ --set global.hosts.domain=mydomain.com \ --set certmanager-issuer.email=admin@example.com ``` 上述命令会自动创建所需的资源并初始化 GitLab 实例。需要注意的是,在实际操作前应调整 `values.yaml` 文件中的参数来适配环境需求[^5]。 #### 2. RBAC 权限分配 为了使 GitLab Runner 能够访问特定命名空间下的 Pod 或其他资源,需定义 RoleBinding ServiceAccount 。例如: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gitlab-runner-binding subjects: - kind: ServiceAccount name: gitlab-runner namespace: default roleRef: kind: ClusterRole name: edit apiGroup: rbac.authorization.k8s.io ``` 此片段展示了如何绑定角色到指定的服务账户上[^1]。 #### 3. 数据持久化存储 对于生产级别的 GitLab 安装来说,数据持久化的处理至关重要。可以利用 PersistentVolume(PV)以及PersistentVolumeClaim(PVC),确保数据库、日志文件等重要资料不会因Pod重启而丢失[^6]。 ```yaml --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-volume-for-gitlab spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-claim-for-gitlab spec: accessModes: - ReadWriteOnce resources: requests: storage: 3Gi ``` #### 4. 自动扩展能力 借助 Horizontal Pod Autoscaler(HPA),可以根据 CPU 利用率或者自定义指标动态调节工作负载副本数量,从而提高系统的弹性响应速度[^7]。 #### 5. 监控与告警机制建立 Prometheus Operator 结合 Grafana 提供了一套完整的监控解决方案,能够实时跟踪 GitLab 各组件的状态变化趋势,并及时发出异常通知[^8]。 --- ### 示例代码:GitLab Runner ConfigMap 设置样例 如果计划让多个项目共享同一个 runner,则可以通过 configmap 方式统一维护其配置项。 ```yaml apiVersion: v1 data: config.toml: | [[runners]] url = "https://gitlab.example.com/" token = "<your_token>" executor = "kubernetes" [runners.kubernetes] image = "alpine:latest" privileged = true kind: ConfigMap metadata: name: gitlab-runner-config namespace: gitlab ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值