Kubernetes(k8s)中文文件 名詞解釋:ThirdPartyResources_Kubernetes中文社群
阿新 • • 發佈:2018-12-27
ThirdPartyResources
ThirdPartyResources是一種無需改變程式碼就可以擴充套件Kubernetes API的機制,可以用來管理自定義物件。每個ThirdPartyResource都包含以下屬性
- metadata:跟kubernetesmetadata一樣
- kind:自定義的資源型別,採用<kind mame>.<domain>的格式
- description:資源描述
- versions:版本列表
- 其他:還可以保護任何其他自定義的屬性
ThirdPartyResources將在v1.7棄用
ThirdPartyResources將在v1.7棄用,並在未來版本中刪除。建議從v1.7開始,遷移到
CustomResourceDefinition。
下面的例子會建立一個/apis/stable.example.com/v1/namespaces/<namespace>/crontabs/…的API
$ cat resource.yaml apiVersion: extensions/v1beta1 kind: ThirdPartyResource metadata: name: cron-tab.stable.example.com description: "A specification of a Pod to run on a cron style schedule" versions: - name: v1 $ kubectl create -f resource.yaml thirdpartyresource "cron-tab.stable.example.com" created
API建立好後,就可以建立具體的CronTab物件了
$ cat my-cronjob.yaml apiVersion: "stable.example.com/v1" kind: CronTab metadata: name: my-new-cron-object cronSpec: "* * * * /5" image: my-awesome-cron-image $ kubectl create -f my-crontab.yaml crontab "my-new-cron-object" created $ kubectl get crontab NAME KIND my-new-cron-object CronTab.v1.stable.example.com
ThirdPartyResources與RBAC
注意ThirdPartyResources不是namespace-scoped的資源,在普通使用者使用之前需要繫結ClusterRole許可權。
$ cat cron-rbac.yaml apiVersion: rbac.authorization.k8s.io/v1alpha1 kind: ClusterRole metadata: name: cron-cluster-role rules: - apiGroups: - extensions resources: - thirdpartyresources verbs: - '*' - apiGroups: - stable.example.com resources: - crontabs verbs: - "*" $ kubectl create -f cron-rbac.yaml $ kubectl create clusterrolebinding user1 --clusterrole=cron-cluster-role --user=user1 --user=user2 --group=group1
參考:https://feisky.gitbooks.io/kubernetes/concepts/thirdpartyresources.html