写点什么

运维训练营第 15 周作业

作者:好吃不贵
  • 2023-02-26
    浙江
  • 本文字数:2137 字

    阅读完需:约 7 分钟

作业:

1、添加两个以上静态令牌认证的用户,例如tom和jerry,并认证到Kubernetes上;添加两个以上的X509证书认证到Kubernetes的用户,比如mason和magedu;把认证凭据添加到kubeconfig配置文件进行加载;
2、使用资源配置文件创建ServiceAccount,并附加一个imagePullSecrets;3、为tom用户授予管理blog名称空间的权限;为jerry授予管理整个集群的权限;为mason用户授予读取集群资源的权限;
4、部署Jenkins、Prometheus-Server、Node-Exporter至Kubernetes集群;而后使用Ingress开放至集群外部,Jenkins要使用https协议开放;
5、使用helm部署主从复制的MySQL集群,部署wordpress,并使用ingress暴露到集群外部; 使用helm部署harbor,成功验证推送Image至Harbor上;
使用helm部署一个redis cluster至Kubernetes上;
复制代码


添加静态令牌认证的用户

create certs

生成 3 位和 8 位的随机数,用点分隔开。

k8s@k8s-master01:~$ echo "$(openssl rand -hex 3).$(openssl rand -hex 8)"

93fcad.e8e0971f9e15d2cb

k8s@k8s-master01:~$ echo "$(openssl rand -hex 3).$(openssl rand -hex 8)"

b2f63d.db45e0ab0019ddbe

k8s@k8s-master01:~$ echo "$(openssl rand -hex 3).$(openssl rand -hex 8)"

ce6c62.fc88f5372d10817f

generate authfiles

mkdir -p /etc/kubernetes/authfiles

vi /etc/kubernetes/authfiles/tokens.csv

93fcad.e8e0971f9e15d2cb,tom,1001,"kubeusers,kubeadmin"

b2f63d.db45e0ab0019ddbe,jerry,1002,"kubeusers"

ce6c62.fc88f5372d10817f,trump,1003,"kubeusers,kubeadmin"

change kube-apiserver

vi /etc/kubernetes/manifests/kube-apiserver.yaml

volumes.hostPath.path: /etc/kubernetes/authfiles/tokens.csv

volumes.hostPath.type: FileOrCreate

Or(preferred):

volumes.hostPath.path: /etc/kubernetes/authfiles

volumes.hostPath.type: DirectoryOrCreate

volumes.hostPath.name: auth-files

volumeMounts:

- mountPath: /etc/kubernetes/authfiles

name: authfiles

readOnly: true

spec.containers.command: --token-auth-file=/etc/kubernetes/authfiles/tokens.csv

update yaml for apiserver

cp kube-apiserver.yaml kube-apiserver.yaml_bak

cp /tmp/kube-apiserver.yaml /etc/kubernetes/manifests

alias k='kubectl'

export KUBECONFIG=/etc/kubernetes/admin.conf


k8s 会自动扫描那个目录的改动,在 API server 重启后,就可以看到系统的 pod 了。

添加 509 证书用户

1、生成长度为 4096 的私钥: (umask 077; openssl genrsa -out ./pki/mason.key 4096)。

2、创建证书签署请求 csr: openssl req -new -key ./pki/mason.key -out ./pki/mason.csr -subj "/CN=mason/O=developers"

3、由 Kubernetes CA 签署证书 crt: openssl x509 -req -days 365 -CA ./pki/ca.crt -CAkey ./pki/ca.key -CAcreateserial -in ./pki/mason.csr -out ./pki/mason.crt

4、将 pki 目录下的 mason.crt、mason.key 和 ca.crt 复制到某部署了 kubectl 的主机上,即可进行测试。

(1)这里以 k8s-node01 为示例;只需要复制 mason.crt 和 mason.key 即可,因为集群工作节点上已经有 cr.crt 文件。

(2)命令:scp -rp /etc/kubernetes/pki/{mason.crt,mason.key} k8s-node01:/etc/kubernetes/pki/

ca.crt 已经有了,所以不需要复制了。

其实就是 RSA 的 key。

用资源配置文件创建 serviceAccount

可以通过 k create sa mysa --dry-run=client -o yaml -n default 命令获得配置文件。

sa.yaml 配置文件如下:

apiVersion: v1

kind: ServiceAccount

metadata:

creationTimestamp: null

name: mysa

namespace: default

创建的命令如下:

k apply -f sa.yaml

为用户授予权限

分为 cluster/user/context 几种:

首先建立 cluster,不同的 user 都用同一个 cluster,名称是 kube-test。

cluster

kubectl config set-cluster kube-test --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://kubeapi.magedu.com:6443" --kubeconfig=$HOME/.kube/kubeusers.conf

user(集群级别的)

Tom 有 blog 的名称空间权限

kubectl config set-credentials tom --token="93fcad.e8e0971f9e15d2cb" --kubeconfig=$HOME/.kube/kubeusers.conf


Jerry 有管理集群权限

kubectl config set-credentials tom --token="93fcad.e8e0971f9e15d2cb" --kubeconfig=$HOME/.kube/kubeusers.conf


Mason 有读取集群权限

k config set-credentials mason --embed-certs=true --client-certificate=/etc/kubernetes/pki/mason.crt --client-key=/etc/kubernetes/pki/mason.key --kubeconfig=$HOME/.kube/kubeusers.conf

可以看到当前的 pod 情况

k get po --kubeconfig=kubeusers.conf

context

kubectl config set-context tom@kube-test --cluster=kube-test --user=tom --kubeconfig=$HOME/.kube/kubeusers.conf

kubectl config use-context jerry@kube-test --kubeconfig=$HOME/.kube/kubeusers.conf

kubectl config use-context mason@kube-test --kubeconfig=$HOME/.kube/kubeusers.conf

加上 ca.crt 之后,就有权限访问 pod 的内容了。

部署 jenkins,prometheus 集群

jenkins 暂时无法 ready,还在 pending,待续。

helm 部署 wordpress,harbor,redis 集群

helm 的 pod 还在 pending,待续。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
运维训练营第15周作业_好吃不贵_InfoQ写作社区