$ oc adm create-bootstrap-project-template -o yaml > template.yaml
安装 OpenShift Container Platform 后,您可以进一步扩展和自定义网络以满足您的需求。
您可以使用集群网络操作符 (CNO) 在 OpenShift Container Platform 集群上部署和管理集群网络组件,包括在安装期间为集群选择的容器网络接口 (CNI) 网络插件。更多信息,请参见 OpenShift Container Platform 中的集群网络操作符。
作为集群管理员,您可以在创建新项目时修改新项目模板以自动包含NetworkPolicy
对象。
作为集群管理员,您可以修改默认项目模板,以便使用自定义需求创建新项目。
创建您自己的自定义项目模板
您可以使用具有cluster-admin
权限的帐户访问 OpenShift Container Platform 集群。
以具有cluster-admin
权限的用户身份登录。
生成默认项目模板
$ oc adm create-bootstrap-project-template -o yaml > template.yaml
使用文本编辑器修改生成的template.yaml
文件,方法是添加对象或修改现有对象。
必须在openshift-config
命名空间中创建项目模板。加载修改后的模板
$ oc create -f template.yaml -n openshift-config
使用 Web 控制台或 CLI 编辑项目配置资源。
使用 Web 控制台
导航到**管理** → **集群设置**页面。
单击**配置**以查看所有配置资源。
找到**项目**的条目,然后单击**编辑 YAML**。
使用 CLI
编辑project.config.openshift.io/cluster
资源
$ oc edit project.config.openshift.io/cluster
更新spec
部分以包含projectRequestTemplate
和name
参数,并设置上传的项目模板的名称。默认名称为project-request
。
apiVersion: config.openshift.io/v1
kind: Project
metadata:
# ...
spec:
projectRequestTemplate:
name: <template_name>
# ...
保存更改后,创建一个新项目以验证更改是否已成功应用。
作为集群管理员,您可以将网络策略添加到新项目的默认模板中。OpenShift Container Platform 将自动在项目中创建模板中指定的全部NetworkPolicy
对象。
您的集群使用支持NetworkPolicy
对象的默认 CNI 网络插件,例如 OVN-Kubernetes。
您已安装 OpenShift CLI(oc
)。
您必须使用具有cluster-admin
权限的用户登录集群。
您必须已为新项目创建自定义的默认项目模板。
运行以下命令来编辑新项目的默认模板:
$ oc edit template <project_template> -n openshift-config
将<project_template>
替换为您为集群配置的默认模板名称。默认模板名称为project-request
。
在模板中,将每个NetworkPolicy
对象作为元素添加到objects
参数中。objects
参数接受一个或多个对象的集合。
在以下示例中,objects
参数集合包含多个NetworkPolicy
对象。
objects:
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-same-namespace
spec:
podSelector: {}
ingress:
- from:
- podSelector: {}
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-openshift-ingress
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
network.openshift.io/policy-group: ingress
podSelector: {}
policyTypes:
- Ingress
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-kube-apiserver-operator
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: openshift-kube-apiserver-operator
podSelector:
matchLabels:
app: kube-apiserver-operator
policyTypes:
- Ingress
...
可选:运行以下命令创建一个新项目,以确认您的网络策略对象已成功创建:
创建一个新项目:
$ oc new-project <project> (1)
1 | 将<project> 替换为您要创建的项目的名称。 |
确认新项目模板中的网络策略对象存在于新项目中。
$ oc get networkpolicy
NAME POD-SELECTOR AGE
allow-from-openshift-ingress <none> 7s
allow-from-same-namespace <none> 7s