Compare commits

..

40 Commits

Author SHA1 Message Date
290d2963b2 Update Rust crate schemars to 0.8.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-29 00:04:20 +00:00
391420e417 Update Rust crate thiserror to 1.0.59
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-21 00:11:09 +00:00
3f93598156 Update Rust crate serde to 1.0.198
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-17 00:11:12 +00:00
98d891d3b4 Update Rust crate anyhow to 1.0.82
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-11 00:11:11 +00:00
8e97bdbe0e Update Rust crate kube to 0.90.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-09 00:12:30 +00:00
de05180ba2 Merge pull request 'Update Rust crate reqwest to 0.12.3' (#91) from renovate/reqwest-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #91
2024-04-08 11:50:18 +00:00
5fbbe548cf Update Rust crate reqwest to 0.12.3
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-04-06 00:12:22 +00:00
1cf40a0b94 Update Rust crate tokio to 1.37.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-29 00:20:59 +00:00
5c5bb26deb Update Rust crate serde_json to 1.0.115
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-27 00:25:11 +00:00
58b02237c2 Update Rust crate reqwest to 0.12.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-26 00:26:06 +00:00
ae3dec359b Update dependencies
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-25 10:54:30 +01:00
5891f44efb Merge pull request 'Update Rust crate serde to 1.0.197' (#73) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #73
2024-03-25 09:50:58 +00:00
c3e2e8cde6 Update Rust crate reqwest to 0.12.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-23 00:26:53 +00:00
4cc7df1031 Update Rust crate reqwest to 0.12.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-21 00:05:46 +00:00
a143034689 Update Rust crate reqwest to 0.11.27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-20 00:05:40 +00:00
dfc1e83c50 Update Rust crate serde to 1.0.197
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-16 00:07:15 +00:00
e7694c1bda Merge pull request 'Update Rust crate anyhow to 1.0.81' (#81) from renovate/anyhow-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #81
2024-03-15 13:32:43 +00:00
f0d0e3ec70 Merge pull request 'Update Rust crate reqwest to 0.11.26' (#82) from renovate/reqwest-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #82
2024-03-15 13:32:23 +00:00
9af0dd87fd Update Rust crate thiserror to 1.0.58
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-13 00:05:25 +00:00
6dea641f6a Update Rust crate reqwest to 0.11.26
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-03-13 00:05:21 +00:00
5119552186 Update Rust crate anyhow to 1.0.81
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-03-13 00:05:14 +00:00
1c8287e04b Update Rust crate reqwest to 0.11.25
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-09 00:14:07 +00:00
31f660da3f Update Rust crate tokio to 1.36.0
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-09 00:12:33 +00:00
e1a7b42807 Update Rust crate env_logger to 0.11.3
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-07 00:17:33 +00:00
76584ef475 Update Rust crate thiserror to 1.0.57
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-07 00:17:26 +00:00
2252dfaf37 Update Rust crate serde_json to 1.0.114
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-06 00:17:29 +00:00
d033e75782 Update Rust crate reqwest to 0.11.24
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-05 00:18:34 +00:00
fff38115c4 Update Rust crate anyhow to 1.0.80
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-05 00:13:03 +00:00
df0cc997cf Update Rust crate log to 0.4.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-02-29 00:12:37 +00:00
baf2964a09 Ran cargo update
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-14 21:29:04 +01:00
7300def6dc Fix issue with read only configuration
Some checks failed
continuous-integration/drone Build is passing
continuous-integration/drone/push Build was killed
2024-01-14 21:17:01 +01:00
b8a102bd0b Can set location of temporary directory 2024-01-14 21:11:15 +01:00
a39f2139df Update base Docker image
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-14 19:49:35 +01:00
5eff31c336 Fix bad deployment configuration
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-14 19:45:38 +01:00
0eaaf6d577 Improve deployment security
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-14 19:37:57 +01:00
a02f8e4dea Update all dependencies
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-14 19:35:08 +01:00
90356554a8 Fix cargo clippy issues 2024-01-14 19:26:16 +01:00
e9f5ecddd5 Update Rust crate anyhow to 1.0.77
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-28 00:20:47 +00:00
05cb9ad33d Update Rust crate futures to 0.3.30
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-25 00:19:18 +00:00
dfa8c1ccb6 Update Rust crate anyhow to 1.0.76
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-21 08:21:41 +00:00
8 changed files with 810 additions and 529 deletions

1229
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -6,17 +6,17 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
log = "0.4.20"
env_logger = "0.10.0"
anyhow = "1.0.75"
serde = { version = "1.0.185", features = ["derive"] }
serde_json = "1.0.105"
schemars = "0.8.16"
tokio = { version = "1.34.0", features = ["full"] }
kube = { version = "0.85.0", features = ["runtime", "derive"] }
k8s-openapi = { version = "0.19.0", features = ["v1_27"] }
futures = "0.3.29"
thiserror = "1.0.49"
log = "0.4.21"
env_logger = "0.11.3"
anyhow = "1.0.82"
serde = { version = "1.0.198", features = ["derive"] }
serde_json = "1.0.115"
schemars = "0.8.17"
tokio = { version = "1.37.0", features = ["full"] }
kube = { version = "0.90.0", features = ["runtime", "derive"] }
k8s-openapi = { version = "0.21.1", features = ["v1_29"] }
futures = "0.3.30"
thiserror = "1.0.59"
rand = "0.8.5"
mktemp = "0.5.1"
reqwest = "0.11.20"
reqwest = "0.12.3"

View File

@@ -1,4 +1,4 @@
FROM debian:bullseye-slim
FROM debian:bookworm-slim
COPY minio-operator /usr/local/bin/minio-operator
COPY mc /usr/local/bin/mc

View File

@@ -4,4 +4,5 @@ pub mod minio;
#[cfg(test)]
pub mod minio_test_server;
pub mod secrets;
pub mod temp;
pub mod utils;

View File

@@ -5,6 +5,7 @@ use serde::Deserialize;
use crate::constants::{MC_EXE, SECRET_MINIO_BUCKET_ACCESS_LEN, SECRET_MINIO_BUCKET_SECRET_LEN};
use crate::crd::{BucketRetention, MinioBucketSpec, RetentionType};
use crate::temp;
use crate::utils::rand_str;
const MC_ALIAS_NAME: &str = "managedminioinst";
@@ -173,7 +174,7 @@ impl MinioService {
{
log::debug!("exec_mc_cmd with args {:?}", args);
let conf_dir = mktemp::Temp::new_dir()?;
let conf_dir = temp::create_temp_dir()?;
let global_flags = ["--config-dir", conf_dir.to_str().unwrap(), "--json"];
// First, set our alias to mc in a temporary directory
@@ -261,7 +262,7 @@ impl MinioService {
}
let res = self.exec_mc_cmd::<BasicMinioResult>(&args).await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::MakeBucketFailed.into());
}
@@ -292,7 +293,7 @@ impl MinioService {
])
.await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::SetQuotaFailed.into());
}
Ok(())
@@ -330,7 +331,7 @@ impl MinioService {
])
.await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::SetAnonymousAcccessFailed.into());
}
@@ -367,7 +368,7 @@ impl MinioService {
.await?
};
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::SetQuotaFailed.into());
}
Ok(())
@@ -415,7 +416,7 @@ impl MinioService {
.await?
};
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::SetRetentionFailed.into());
}
@@ -458,7 +459,7 @@ impl MinioService {
/// Apply a bucket policy
pub async fn policy_apply(&self, name: &str, content: &str) -> anyhow::Result<()> {
let tmp_file = mktemp::Temp::new_file()?;
let tmp_file = temp::create_temp_file()?;
std::fs::write(&tmp_file, content)?;
let res = self
@@ -472,7 +473,7 @@ impl MinioService {
])
.await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::ApplyPolicyFailed.into());
}
@@ -512,7 +513,7 @@ impl MinioService {
])
.await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::CreateUserFailed.into());
}
@@ -552,7 +553,7 @@ impl MinioService {
])
.await?;
if res.get(0).map(|r| r.success()) != Some(true) {
if res.first().map(|r| r.success()) != Some(true) {
return Err(MinioError::CreateUserFailed.into());
}
@@ -579,7 +580,7 @@ impl MinioService {
.userMappings;
if let Some(mapping) = res {
if let Some(e) = mapping.get(0) {
if let Some(e) = mapping.first() {
return Ok(e.policies.clone());
}
}

View File

@@ -3,6 +3,7 @@
//! Used for testing only
use crate::minio::MinioService;
use crate::temp;
use crate::utils::rand_str;
use rand::RngCore;
use std::io::ErrorKind;
@@ -20,7 +21,7 @@ pub struct MinioTestServer {
impl MinioTestServer {
pub async fn start() -> anyhow::Result<Self> {
let storage_dir = mktemp::Temp::new_dir()?;
let storage_dir = temp::create_temp_dir()?;
let root_user = rand_str(30);
let root_password = rand_str(30);

26
src/temp.rs Normal file
View File

@@ -0,0 +1,26 @@
use std::path::{Path, PathBuf};
/// Get the directory where temp files should be created
fn temp_path() -> Option<PathBuf> {
std::env::var("TEMP_DIR")
.as_deref()
.ok()
.map(Path::new)
.map(|p| p.to_path_buf())
}
/// Create a temporary directory
pub fn create_temp_dir() -> std::io::Result<mktemp::Temp> {
match temp_path() {
None => mktemp::Temp::new_dir(),
Some(p) => mktemp::Temp::new_dir_in(p),
}
}
/// Create a temporary file
pub fn create_temp_file() -> std::io::Result<mktemp::Temp> {
match temp_path() {
None => mktemp::Temp::new_file(),
Some(p) => mktemp::Temp::new_file_in(p),
}
}

View File

@@ -63,8 +63,19 @@ spec:
requests:
memory: 150Mi
cpu: "0.01"
volumeMounts:
- mountPath: /tmp
readOnly: false
name: tempdir
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsUser: 1000
runAsGroup: 1000
capabilities:
drop:
- ALL
volumes:
- name: tempdir
emptyDir:
sizeLimit: 500Mi