Add website #2
							
								
								
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -14,3 +14,25 @@ steps: | ||||
|   - cargo clippy -- -D warnings | ||||
|   - cargo test | ||||
|  | ||||
| - name: doc | ||||
|   image: python | ||||
|   environment: | ||||
|     AWS_ACCESS_KEY_ID: | ||||
|       from_secret: AWS_ACCESS_KEY_ID | ||||
|     AWS_SECRET_ACCESS_KEY: | ||||
|       from_secret: AWS_SECRET_ACCESS_KEY | ||||
|     AWS_DEFAULT_REGION: us-east-1 | ||||
|   when: | ||||
|     branch: | ||||
|     - master | ||||
|   commands: | ||||
|   # Build website | ||||
|   - pip install mkdocs-material | ||||
|   - mkdocs build --site-dir public | ||||
|   # Install AWS | ||||
|   - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" | ||||
|   - unzip awscliv2.zip | ||||
|   - ./aws/install | ||||
|   - aws configure set default.s3.signature_version s3v4 | ||||
|   # Upload to bucket | ||||
|   - cd public && aws --endpoint-url https://s3.communiquons.org s3 sync . s3://miniok8sbucketsoperator-website | ||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,24 +1,6 @@ | ||||
| # MinioK8sBuckets | ||||
| [](https://drone.communiquons.org/pierre/MinioK8sBuckets) | ||||
|  | ||||
| Automatically create Minio buckets based on K8S Custom Resources. | ||||
|  | ||||
| ## Installation | ||||
| 1. Run the following commands: | ||||
| ```bash | ||||
| kubectl apply -f https://raw.githubusercontent.com/pierre42100/MinioK8sBuckets/master/yaml/crd.yaml | ||||
| kubectl apply -f https://raw.githubusercontent.com/pierre42100/MinioK8sBuckets/master/yaml/deployment.yaml | ||||
| ``` | ||||
|  | ||||
| 2. Deploy Minio | ||||
| 3. Create a MinioInstance & a MinioBucket (like in [our test](test/test-inside-cluster.yaml)) | ||||
| 4. That's it! | ||||
|  | ||||
|  | ||||
| ## Development | ||||
| Apply all K8s config files manually: | ||||
|  | ||||
| ```bash | ||||
| cat yaml/*.yaml | kubectl apply -f - | ||||
| ``` | ||||
|  | ||||
| Note : [mc tool](https://min.io/download) is required | ||||
| See the [docs](docs) to learn more. | ||||
							
								
								
									
										116
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,116 @@ | ||||
| # Minio K8S bucket operator | ||||
|  | ||||
| An operator to automatically create and update S3 buckets on Minio, with their accounts. | ||||
|  | ||||
| One deployed, this tool will allow you to automatically create Minio accounts associated with buckets. | ||||
|  | ||||
|  | ||||
| ## Pre-requisites | ||||
| You will need: | ||||
|  | ||||
| * `kubectl` access to the target cluster | ||||
| * A running Minio instance, and especially: | ||||
|     * The URL where the API of the instance can be reached | ||||
|     * The root credentials | ||||
|  | ||||
|  | ||||
| ## Installation | ||||
| The operator can be installed using the following commands: | ||||
|  | ||||
| ```bash | ||||
| kubectl apply -f https://raw.githubusercontent.com/pierre42100/MinioK8sBuckets/master/yaml/crd.yaml | ||||
| kubectl apply -f https://raw.githubusercontent.com/pierre42100/MinioK8sBuckets/master/yaml/deployment.yaml | ||||
| ``` | ||||
|  | ||||
| !!! warning "Known limitation" | ||||
|     The operator install a deployment on the `default` namespace. Currently, only this namespace is supported! | ||||
|  | ||||
| ## Configure instance | ||||
| In order to create buckets, the operator needs to know how to reach the Minio instance. | ||||
|  | ||||
| You first need to secret similar to that one: | ||||
|  | ||||
| ```yaml | ||||
| apiVersion: v1 | ||||
| kind: Secret | ||||
| metadata: | ||||
|   name: minio-root | ||||
| type: Opaque | ||||
| dyringData: | ||||
|   accessKey: <MINIO_ROOT_ACCESS_KEY> | ||||
|   secretKey: <MINIO_ROOT_SECRET_KEY> | ||||
| ``` | ||||
|  | ||||
| Replace `<MINIO_ROOT_ACCESS_KEY>` and `<MINIO_ROOT_SECRET_KEY>` with the appropriate values. | ||||
|  | ||||
|  | ||||
|  | ||||
| You can then declare a Minio instance simiarl to that one: | ||||
|  | ||||
| ```yaml | ||||
| apiVersion: "communiquons.org/v1" | ||||
| kind: MinioInstance | ||||
| metadata: | ||||
|   name: my-minio-instance | ||||
| spec: | ||||
|   endpoint: https://minio.example.com/ | ||||
|   credentials: minio-root | ||||
| ``` | ||||
|  | ||||
| !!! note | ||||
|     Minio itself can be located outside of the Kubernetes cluster. | ||||
|  | ||||
|  | ||||
| ## Create a bucket | ||||
| You are not ready to create your first bucket! | ||||
|  | ||||
| Here is a basic bucket example: | ||||
|  | ||||
| ```yaml | ||||
| apiVersion: "communiquons.org/v1" | ||||
| kind: MinioBucket | ||||
| metadata: | ||||
|   name: first-bucket | ||||
| spec: | ||||
|   # The name of the minio instance | ||||
|   instance: my-minio-instance | ||||
|   # The name of the bucket to create | ||||
|   name: first-bucket | ||||
|   # The name of the secret that will be created | ||||
|   # by the operator which contains credentials to  | ||||
|   # use to access the bucket | ||||
|   secret: first-bucket-secret | ||||
| ``` | ||||
|  | ||||
| ## More complete example | ||||
| Here is a more complete example that makes use of all the available options: | ||||
|  | ||||
| ```yaml | ||||
| apiVersion: "communiquons.org/v1" | ||||
| kind: MinioBucket | ||||
| metadata: | ||||
|   name: my-bucket | ||||
| spec: | ||||
|   instance: my-minio-instance | ||||
|   name: my-bucket | ||||
|   secret: my-bucket-secret | ||||
|   # This must be set to true to allow unauthenticated | ||||
|   # access to the bucket resources. Use this to host a | ||||
|   # static website for example | ||||
|   anonymous_read_access: true | ||||
|   # Enable versioning on the bucket => keep old versions | ||||
|   # of uploaded files | ||||
|   versioning: true | ||||
|   # If specified, a quota will be applied to the bucket, in bytes | ||||
|   quota: 1000000000 | ||||
|   # Prevent files from being removed from the bucket. This parameter | ||||
|   # can not be changed, once the bucket has been created | ||||
|   lock: true | ||||
|   # Data retention policy. Versioning must be enabled to allow this | ||||
|   retention: | ||||
|     # The number of days data shall be kept | ||||
|     validity: 100 | ||||
|     # compliance => nobody can bypass the policy | ||||
|     # governance => users with privileges might bypass policy restrictions | ||||
|     mode: compliance | ||||
| ``` | ||||
							
								
								
									
										20
									
								
								mkdocs.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								mkdocs.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| site_name: Minio K8S buckets operator | ||||
| theme: | ||||
|   language: en | ||||
|   name: material | ||||
|   palette: | ||||
|     # Palette toggle for dark mode | ||||
|     - media: "(prefers-color-scheme: dark)" | ||||
|       scheme: slate | ||||
|  | ||||
|  | ||||
| markdown_extensions: | ||||
|   - admonition | ||||
|   - pymdownx.details | ||||
|   - pymdownx.superfences | ||||
|  | ||||
| repo_url: https://gitea.communiquons.org/pierre/MinioK8sBuckets | ||||
| edit_uri: src/branch/master/docs/ | ||||
|  | ||||
| plugins: | ||||
|   - search | ||||
		Reference in New Issue
	
	Block a user