mirror of
https://gitee.com/devstar/devstar-devcontainer-operator
synced 2025-04-21 09:42:22 +00:00

* 优化 DevcontainerApp Reconciler 逻辑 * Added Readiness Probing * Updated port num validation * Updated Quickstart Doc * Replaced Nginx Ingress Controller with NodePort Service * Updated resource creation: * Added resource creation * Added .editorconfig
142 lines
4.7 KiB
Markdown
142 lines
4.7 KiB
Markdown
# devstar-devcontainer-kubebuilder-scaffold
|
||
|
||
DevStar DevContainer CRD 脚手架工程
|
||
|
||
## Description
|
||
|
||
本工程是 DevStar Studio 项目的子工程,专用于定制 k8s CRD (Custom Resource Definition) 资源及其自定义 Controller
|
||
- **CRD 封装**:将 StatefulSet, Service, Ingress 打包部署
|
||
- **Self-Healing**:当 DevContainer 意外终止或运维人员意外删库,该组件能够自动重新拉起对应的资源,保证服务的持续交付
|
||
|
||
## Getting Started
|
||
|
||
### Prerequisites
|
||
- go version v1.22.0+
|
||
- docker version 17.03+.
|
||
- kubectl version v1.11.3+.
|
||
- Access to a Kubernetes v1.11.3+ cluster.
|
||
- OpenEBS
|
||
|
||
### 使用 Helm Chart 安装 OpenEBS
|
||
|
||
DevStar DevContainer 需要 [OpenEBS](https://openebs.io/) 进行动态存储分配
|
||
|
||
```bash
|
||
helm repo add openebs https://openebs.github.io/openebs
|
||
helm repo update
|
||
helm install openebs --namespace openebs openebs/openebs --create-namespace
|
||
|
||
helm ls -n openebs
|
||
# NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
|
||
# openebs openebs 1 2024-09-13 02:18:28.88814725 +0000 UTC deployed openebs-4.1.0 4.1.0
|
||
|
||
kubectl get sc
|
||
# NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
|
||
# mayastor-etcd-localpv openebs.io/local Delete WaitForFirstConsumer false 3m48s
|
||
# mayastor-loki-localpv openebs.io/local Delete WaitForFirstConsumer false 3m48s
|
||
# openebs-hostpath openebs.io/local Delete WaitForFirstConsumer false 3m48s
|
||
# openebs-single-replica io.openebs.csi-mayastor Delete Immediate true 3m48s
|
||
# standard (default) k8s.io/minikube-hostpath Delete Immediate false 8d
|
||
```
|
||
|
||
### To Deploy on the cluster
|
||
**Build and push your image to the location specified by `IMG`:**
|
||
|
||
```sh
|
||
make docker-build docker-push IMG=<some-registry>/devstar-devcontainer-kubebuilder-scaffold:tag
|
||
```
|
||
|
||
**NOTE:** This image ought to be published in the personal registry you specified.
|
||
And it is required to have access to pull the image from the working environment.
|
||
Make sure you have the proper permission to the registry if the above commands don’t work.
|
||
|
||
**Install the CRDs into the cluster:**
|
||
|
||
```sh
|
||
make install
|
||
```
|
||
|
||
**Deploy the Manager to the cluster with the image specified by `IMG`:**
|
||
|
||
```sh
|
||
make deploy IMG=<some-registry>/devstar-devcontainer-kubebuilder-scaffold:tag
|
||
```
|
||
|
||
> **NOTE**: If you encounter RBAC errors, you may need to grant yourself cluster-admin
|
||
privileges or be logged in as admin.
|
||
|
||
**Create instances of your solution**
|
||
You can apply the samples (examples) from the config/sample:
|
||
|
||
```sh
|
||
kubectl apply -k config/samples/
|
||
```
|
||
|
||
>**NOTE**: Ensure that the samples has default values to test it out.
|
||
|
||
### To Uninstall
|
||
**Delete the instances (CRs) from the cluster:**
|
||
|
||
```sh
|
||
kubectl delete -k config/samples/
|
||
```
|
||
|
||
**Delete the APIs(CRDs) from the cluster:**
|
||
|
||
```sh
|
||
make uninstall
|
||
```
|
||
|
||
**UnDeploy the controller from the cluster:**
|
||
|
||
```sh
|
||
make undeploy
|
||
```
|
||
|
||
## Project Distribution
|
||
|
||
Following are the steps to build the installer and distribute this project to users.
|
||
|
||
1. Build the installer for the image built and published in the registry:
|
||
|
||
```sh
|
||
make build-installer IMG=<some-registry>/devstar-devcontainer-kubebuilder-scaffold:tag
|
||
```
|
||
|
||
NOTE: The makefile target mentioned above generates an 'install.yaml'
|
||
file in the dist directory. This file contains all the resources built
|
||
with Kustomize, which are necessary to install this project without
|
||
its dependencies.
|
||
|
||
2. Using the installer
|
||
|
||
Users can just run kubectl apply -f <URL for YAML BUNDLE> to install the project, i.e.:
|
||
|
||
```sh
|
||
kubectl apply -f https://raw.githubusercontent.com/<org>/devstar-devcontainer-kubebuilder-scaffold/<tag or branch>/dist/install.yaml
|
||
```
|
||
|
||
## Contributing
|
||
// TODO(user): Add detailed information on how you would like others to contribute to this project
|
||
|
||
**NOTE:** Run `make help` for more information on all potential `make` targets
|
||
|
||
More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html)
|
||
|
||
## License
|
||
|
||
Copyright 2024.
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
|