創(chuàng)建service account綁定cluster-admin的role

背景

在kubernetes容器中使用kubectl客戶端獲取kubernetes集群中的資源信息或者是執(zhí)行一些腳本。

kubernetes中RBAC機(jī)制

image.png

1倒堕、創(chuàng)建subject service account資源:

kubectl create serviceaccount <service_account_name> -n namespace

比如:

kubectl create serviceaccount initdb -n kube-system

還可以通過yaml的方式創(chuàng)建service account:

apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: default
  name: example

查看創(chuàng)建好的service account蝶桶,可以看到會自動創(chuàng)建一個secret,secret,就是這個 ServiceAccount 對應(yīng)的珍手、用來跟 APIServer 進(jìn)行交互的授權(quán)文件,我們一般稱它為:Token辞做。Token 文件的內(nèi)容一般是證書或者密碼琳要,它以一個 Secret 對象的方式保存在 Etcd 當(dāng)中

apiVersion: v1
kind: ServiceAccount
metadata:
  name: example
  namespace: default
  resourceVersion: "6234756"
  selfLink: /api/v1/namespaces/default/serviceaccounts/example
  uid: 34a93e41-83b5-4cab-ba95-6859a7e57da7
secrets:
- name: example-token-fplk6

可以查看secret的內(nèi)容,里面包含了證書:

apiVersion: v1
data:
  ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1ESXlOekE1TURBME5Wb1hEVE16TURJeU5EQTVNREEwTlZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTzdLCjRoY2JaN2cvZWVLNXlSYU1JeVhOQitjSGdGOHhWL1prYm43NzlRNU9WeVB2ekxrbUJyclFHVG1CeG12eG1BczAKeVlRM1dlUVdBbHdxNHNJMHlraWJ3VzhEK1E0MXhsMm9mNmZhQWRpS0N4MzJJd2lEZytncThpM0plTERmZUd6bApFbU1kS3MxMFV1NGxvV2NJUGQ5RkNOMXVRbEpmK0MxTU5yYjVWazhpYTJhSzRsK2E0YVkwS0NIVHJrSVp0RXJPCjExalZyNTB6SExYTGc1VldGeDhUamE4c3ladllGdlFqd0JnakU3WGM2SmFoczhsUGovaGZMdy90T2Y2MHRYNEQKbmRCaittMUkvSnBPSENEQzkwdENnYWF3cVA1WlFBOVp0L3N4SnUzcGV0UjVZSTYvbzc3NjViVVJGUVNsVGlDcwovSnhpcUVRakpIZU5paStLRzljQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFPZGY2aSs2SUNPYXZ4M0FQc1hvdnVVQXFmRk8KYjhYS0RoK2lESE9xVGRIdlUzbEZxWHFxcWw2QVZrbkp3c1phWDVoSDFJZHpqNlk2QnJQZzI1QmR1dkR5eEMzTApHUDZxNVNjZTk4bHRrRnRFM28wTmZmb2R0bSsvL2dqS2ZnZXE3THBoUi9yQ2xWUTlXc1cxMTFQZHJ3VWU1NG1sCkdhM1I5WXBCcjdoOTh2VHpWYXA5OGtSY21kTGZ3dkF1N21JWVcvN2tPZEo5V01obEJtU3djQ3dOMVR4YzBzQlkKRk5SL1lQZ1JHcDMyQnlJMndZdnZIOGhDbFIvSlVWdGl1NlEvSDlnQWFueDRmSnpmbWt6dnVYMWxENm42SjA2YgpsckQ1amZ4dC9xOGRhUkxGVUNYMElRMjdMS1B0VmdJMzhNMkFUalRZMVpQamdoQUpNeTRDQ2FROGhxWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
  namespace: ZGVmYXVsdA==
  token: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkluWlRUVjlWUVhwUk5XMUliVk5JVXpSUVEyRmFWM0ZPZGtRMExYYzJMVzFoYmpSRmRGTlNXbmM0ZEVVaWZRLmV5SnBjM01pT2lKcmRXSmxjbTVsZEdWekwzTmxjblpwWTJWaFkyTnZkVzUwSWl3aWEzVmlaWEp1WlhSbGN5NXBieTl6WlhKMmFXTmxZV05qYjNWdWRDOXVZVzFsYzNCaFkyVWlPaUprWldaaGRXeDBJaXdpYTNWaVpYSnVaWFJsY3k1cGJ5OXpaWEoyYVdObFlXTmpiM1Z1ZEM5elpXTnlaWFF1Ym1GdFpTSTZJbVY0WVcxd2JHVXRkRzlyWlc0dFpuQnNhellpTENKcmRXSmxjbTVsZEdWekxtbHZMM05sY25acFkyVmhZMk52ZFc1MEwzTmxjblpwWTJVdFlXTmpiM1Z1ZEM1dVlXMWxJam9pWlhoaGJYQnNaU0lzSW10MVltVnlibVYwWlhNdWFXOHZjMlZ5ZG1salpXRmpZMjkxYm5RdmMyVnlkbWxqWlMxaFkyTnZkVzUwTG5WcFpDSTZJak0wWVRrelpUUXhMVGd6WWpVdE5HTmhZaTFpWVRrMUxUWTROVGxoTjJVMU4yUmhOeUlzSW5OMVlpSTZJbk41YzNSbGJUcHpaWEoyYVdObFlXTmpiM1Z1ZERwa1pXWmhkV3gwT21WNFlXMXdiR1VpZlEuTEJxaTdPMld4OVJRbGZQNUxWelBCX3c2alRTME5yNmJaX0V3MXZiOHhSOExKR0pBa09ScVdMeXNmcDdEa0MzV29BeGtCd01zRjQ2UmJ4c1YtZXVvR1hWQWUzSXMxV1lJa3NzNDc4YnJpaWtPVEVrdWp6bU9EeFFTelpIaVNXQW1BUHgwQkhCODE3VXQ5b2dOWDVJVi1HTWdqaDBYZTJjZGJuVm1DN0xnNTZiUjN0cW9wMWgxZmp5azlZVnNLdmFCV05PelFMVHR4eEoycXhQRTVjNE5reUpDTncxWGdUVnByU3d1bWhGNm5maXVmRFdrUlNWdERyb1dkbmllOXI4aEs5VDFpU2JTTWFSbm5uMVNVN3JLQ2d4bS1odVdxTHFxbnA4RXZiNmxFOTY4U1RwYTAtV2lRXy16TWNuNG1icjVJSjVQcWZyOEwzeUN3cjQ1X0cxZUVB
kind: Secret
metadata:
  name: example-token-fplk6
  namespace: default
  resourceVersion: "6234755"
  selfLink: /api/v1/namespaces/default/secrets/example-token-fplk6
  uid: bde5d411-5e12-4b14-b977-2fad7afa0d23
type: kubernetes.io/service-account-token

secret 對象秤茅,被 Kubernetes 自動掛載到了容器的/var/run/secrets/kubernetes.io/serviceaccount 目錄下稚补,可以進(jìn)入到容器中看到掛在的內(nèi)容:

# kubectl exec -it nginx sh
# cd /var/run/secrets/kubernetes.io/serviceaccount
# ls
ca.crt namespace  token
# cat namespace
default

容器里的應(yīng)用就會使用ca.crt文件來訪問API Server。
2框喳、k8s內(nèi)置了好多clusterrole資源课幕,cluster role資源代表了被作用者service account擁有的操作集群中資源的權(quán)限比如get,list,delete,watch等。我們使用cluster-admin這個clusterrole來給予上面創(chuàng)建的service account資源權(quán)限五垮,特別說明cluster-admin這個clusterrole的權(quán)限比較大乍惊,具有操作集群中任何資源的權(quán)限,所以謹(jǐn)慎使用放仗。

kubectl create clusterrolebinding <cluster_role_binding_name> --clusterrole=cluster-admin --serviceaccount=<namespace-name>:<service_account_name>

比如:

kubectl create clusterrolebinding initdb --clusterrole=cluster-admin --serviceaccount=kube-system:initdb

3润绎、上面創(chuàng)建資源已經(jīng)就緒,接下來就是在pod中使用創(chuàng)建的service account诞挨,在模版中指定serviceAccountName字段的值莉撇,此處我創(chuàng)建的是helm chart中的一個post-install-hook資源:

apiVersion: batch/v1
kind: Job
metadata:
  name: {{ .Release.Name }}-post-install-job
  annotations:
    "helm.sh/hook": post-install
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    metadata:
      name: {{ .Release.Name }}
      labels:
        release: {{ .Release.Name }}
        chart: {{ .Chart.Name }}
        version: {{ .Chart.Version }}
    spec:
      serviceAccountName: initdb
      restartPolicy: Never
      containers:
      - name: post-install-job
        image: tkestack/kubectl:1.22.7
        command: ["/bin/bash", "/opt/init.sh"]
        volumeMounts:
        - mountPath: "/opt/init.sh"
          name: config-db
          subPath: init.sh
      volumes:
      - name: config-db
        configMap:
          name: config-db
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亭姥,隨后出現(xiàn)的幾起案子稼钩,更是在濱河造成了極大的恐慌,老刑警劉巖达罗,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坝撑,死亡現(xiàn)場離奇詭異,居然都是意外死亡粮揉,警方通過查閱死者的電腦和手機(jī)巡李,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扶认,“玉大人侨拦,你說我怎么就攤上這事》觯” “怎么了狱从?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵膨蛮,是天一觀的道長。 經(jīng)常有香客問我季研,道長敞葛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任与涡,我火速辦了婚禮惹谐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驼卖。我一直安慰自己氨肌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布酌畜。 她就那樣靜靜地躺著怎囚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪檩奠。 梳的紋絲不亂的頭發(fā)上桩了,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音埠戳,去河邊找鬼井誉。 笑死,一個胖子當(dāng)著我的面吹牛整胃,可吹牛的內(nèi)容都是我干的颗圣。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼屁使,長吁一口氣:“原來是場噩夢啊……” “哼在岂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛮寂,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蔽午,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酬蹋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體及老,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年范抓,在試婚紗的時候發(fā)現(xiàn)自己被綠了骄恶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡匕垫,死狀恐怖僧鲁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤寞秃,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布斟叼,位于F島的核電站,受9級特大地震影響蜕该,放射性物質(zhì)發(fā)生泄漏犁柜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一堂淡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扒腕,春花似錦绢淀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹋盆,卻和暖如春费薄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栖雾。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工楞抡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人析藕。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓召廷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親账胧。 傳聞我的和親對象是個殘疾皇子竞慢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容