From e173c3a252d54bec8a86f7f53fb5bb75e2dfc829 Mon Sep 17 00:00:00 2001 From: Nimish Date: Fri, 28 Mar 2025 19:18:38 +0530 Subject: [PATCH 1/9] chore: update dependencies in requirements.txt to cffi==1.17.1 and requests==2.32.0 --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8e80979..88699ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -cffi==1.15.1 -requests==2.31.0 +cffi==1.17.1 +requests==2.32.0 PyNaCl==1.5.0 kopf==1.36.2 kubernetes==28.1.0 From 99d2cf0eb5214168f8839c8745f4ba6ed8351068 Mon Sep 17 00:00:00 2001 From: Nimish Date: Fri, 28 Mar 2025 19:19:06 +0530 Subject: [PATCH 2/9] feat: enhance secret referencing to support cross-application references --- src/utils/secret_referencing.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/utils/secret_referencing.py b/src/utils/secret_referencing.py index 6a463db..95261bd 100644 --- a/src/utils/secret_referencing.py +++ b/src/utils/secret_referencing.py @@ -7,8 +7,8 @@ Secret Referencing Syntax: This documentation explains the syntax used for referencing secrets within the configuration. - Secrets can be referenced both locally (within the same environment) and across different environments, - with or without specifying a path. + Secrets can be referenced locally (within the same environment), across different environments, + and across different applications, with or without specifying a path. Syntax Patterns: @@ -40,8 +40,16 @@ - Secret Key: `STRIPE_KEY` - Description: References a secret named `STRIPE_KEY` located at `/backend/payments/` in the current environment. + 5. Cross-Application Reference: + Syntax: `${backend_api::production./frontend/SECRET_KEY}` + - Application: Different application (e.g., `backend_api`). + - Environment: Different environment (e.g., `production`). + - Path: Specifies a path within the environment (`/frontend/`). + - Secret Key: `SECRET_KEY` + - Description: References a secret named `SECRET_KEY` located at `/frontend/` in the `production` environment of the `backend_api` application. + Note: - The syntax allows for flexible secret management, enabling both straightforward local references and more complex cross-environment references. + The syntax allows for flexible secret management, enabling local references, cross-environment references, and cross-application references. """ @@ -74,12 +82,12 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st """ Resolves a single secret reference to its actual value by fetching it from the specified environment. - The function supports both local and cross-environment secret references, allowing for flexible secret management. + The function supports local, cross-environment, and cross-application secret references, allowing for flexible secret management. Local references are identified by the absence of a dot '.' in the reference string, implying the current environment. Cross-environment references include an environment name, separated by a dot from the rest of the path. Args: - ref (str): The secret reference string, which could be a local or cross-environment reference. + ref (str): The secret reference string, which could be a local, cross-environment, or cross-application reference. secrets_dict (Dict[str, Dict[str, Dict[str, str]]]): A dictionary containing known secrets. phase ('Phase'): An instance of the Phase class to fetch secrets. current_application_name (str): The name of the current application. @@ -92,6 +100,11 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st path = "/" # Default root path key_name = ref + # Check if this is a cross-application reference + if "::" in ref: + parts = ref.split("::", 1) + app_name, ref = parts[0], parts[1] + # Parse the reference to identify environment, path, and secret key. if "." in ref: # Cross-environment references parts = ref.split(".", 1) @@ -112,15 +125,15 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st return secrets_dict[env_name]['/'][key_name] # If the secret is not found in secrets_dict, try to fetch it from Phase - fetched_secrets = phase.get(env_name=env_name, app_name=current_application_name, keys=[key_name], path=path) + fetched_secrets = phase.get(env_name=env_name, app_name=app_name, keys=[key_name], path=path) for secret in fetched_secrets: if secret["key"] == key_name: return secret["value"] except EnvironmentNotFoundException: pass - # Return the reference as is if not resolved - return f"${{{ref}}}" + # Return the original secret value as is if not resolved + return f"${{{original_ref}}}" def resolve_all_secrets(value: str, all_secrets: List[Dict[str, str]], phase: 'Phase', current_application_name: str, current_env_name: str) -> str: From e37c1d05ea86afb909bc6b7fd2c2626a1315f8fc Mon Sep 17 00:00:00 2001 From: Nimish Date: Fri, 28 Mar 2025 19:19:10 +0530 Subject: [PATCH 3/9] feat: store original reference and define application name in secret resolution --- src/utils/secret_referencing.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/utils/secret_referencing.py b/src/utils/secret_referencing.py index 95261bd..025f5e7 100644 --- a/src/utils/secret_referencing.py +++ b/src/utils/secret_referencing.py @@ -1,7 +1,7 @@ -import re from typing import Dict, List from exceptions import EnvironmentNotFoundException from utils.const import SECRET_REF_REGEX +from utils.phase_io import Phase """ Secret Referencing Syntax: @@ -85,6 +85,7 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st The function supports local, cross-environment, and cross-application secret references, allowing for flexible secret management. Local references are identified by the absence of a dot '.' in the reference string, implying the current environment. Cross-environment references include an environment name, separated by a dot from the rest of the path. + Cross-application references use '::' to separate the application name from the rest of the reference. Args: ref (str): The secret reference string, which could be a local, cross-environment, or cross-application reference. @@ -96,6 +97,8 @@ def resolve_secret_reference(ref: str, secrets_dict: Dict[str, Dict[str, Dict[st Returns: str: The resolved secret value or the original reference if not resolved. """ + original_ref = ref # Store the original reference + app_name = current_application_name env_name = current_env_name path = "/" # Default root path key_name = ref From 673d52990322254658c577e0654c534361c1ab23 Mon Sep 17 00:00:00 2001 From: Rohan Date: Thu, 3 Apr 2025 19:14:54 +0530 Subject: [PATCH 4/9] chore: bump kopf --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 88699ab..384fdc1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ cffi==1.17.1 requests==2.32.0 PyNaCl==1.5.0 -kopf==1.36.2 +kopf==1.37.5 kubernetes==28.1.0 pytest==7.3.1 pyyaml==6.0.1 \ No newline at end of file From 51a8d1aeaad093473d3b0b32365eac6099bf3ff3 Mon Sep 17 00:00:00 2001 From: Nimish Date: Sun, 6 Apr 2025 14:35:59 +0530 Subject: [PATCH 5/9] chore: bump version to 1.2.4 --- src/utils/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/const.py b/src/utils/const.py index 28fd3f0..a240067 100644 --- a/src/utils/const.py +++ b/src/utils/const.py @@ -1,6 +1,6 @@ import os import re -__version__ = "1.2.3" +__version__ = "1.2.4" __ph_version__ = "v1" description = "Securely manage application secrets and environment variables with Phase." From de6d32e187fb2d94eed524aec6c6a4ce3e6f6651 Mon Sep 17 00:00:00 2001 From: Nimish Date: Sun, 6 Apr 2025 14:37:23 +0530 Subject: [PATCH 6/9] chore: remove old helm package version 1.2.3 and add new version 1.2.4 --- helm-repo/phase-kubernetes-operator-1.2.3.tgz | Bin 3083 -> 0 bytes helm-repo/phase-kubernetes-operator-1.2.4.tgz | Bin 0 -> 3083 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 helm-repo/phase-kubernetes-operator-1.2.3.tgz create mode 100644 helm-repo/phase-kubernetes-operator-1.2.4.tgz diff --git a/helm-repo/phase-kubernetes-operator-1.2.3.tgz b/helm-repo/phase-kubernetes-operator-1.2.3.tgz deleted file mode 100644 index b450d74dc29915b0440726e7d326dbcdda56ee9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3083 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 diff --git a/helm-repo/phase-kubernetes-operator-1.2.4.tgz b/helm-repo/phase-kubernetes-operator-1.2.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3db26297e9544144e58c29945de896520da6edaf GIT binary patch literal 3083 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 Date: Sun, 6 Apr 2025 14:37:36 +0530 Subject: [PATCH 7/9] chore: update chart version and application version to 1.2.4 --- phase-kubernetes-operator/Chart.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phase-kubernetes-operator/Chart.yaml b/phase-kubernetes-operator/Chart.yaml index fb45bcd..25e1932 100644 --- a/phase-kubernetes-operator/Chart.yaml +++ b/phase-kubernetes-operator/Chart.yaml @@ -5,10 +5,10 @@ description: A Helm chart for deploying the Phase Kubernetes Operator type: application # Version of the chart -version: 1.2.3 +version: 1.2.4 # Version of the application (operator) that is being deployed -appVersion: "1.2.3" +appVersion: "1.2.4" # Keywords, maintainers, and source URLs can also be added here keywords: From 44ae395e473206d4009ed350fe67724618308364 Mon Sep 17 00:00:00 2001 From: Nimish Date: Sun, 6 Apr 2025 14:37:43 +0530 Subject: [PATCH 8/9] chore: update creation timestamps and version numbers for Phase charts to 1.2.4 --- helm-repo/index.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/helm-repo/index.yaml b/helm-repo/index.yaml index aefbf4d..21818e0 100644 --- a/helm-repo/index.yaml +++ b/helm-repo/index.yaml @@ -2,7 +2,7 @@ apiVersion: v1 entries: phase: - apiVersion: v2 - created: "2025-03-25T20:38:25.10642773+05:30" + created: "2025-04-06T14:37:10.153678271+05:30" description: A Helm chart for deploying the Phase Secrets Manager digest: d555b6b721fe9bfe639bff8803558172f9aa449a06f45bb83bcc801654256a68 home: https://github.com/phasehq/kubernetes-secrets-operator @@ -22,10 +22,10 @@ entries: version: 0.2.1 phase-kubernetes-operator: - apiVersion: v2 - appVersion: 1.2.3 - created: "2025-03-25T20:38:25.106681633+05:30" + appVersion: 1.2.4 + created: "2025-04-06T14:37:10.153929128+05:30" description: A Helm chart for deploying the Phase Kubernetes Operator - digest: 93e571ad092af42648a8731de51d6b1a371f5b738a5b6c5a327ca38fa90d45e4 + digest: 4ae6e3dd5c7b1b18863aaaf646dbbb2ac6cc64cdc0a0b35b79ade6b3aac19e72 home: https://github.com/phasehq/kubernetes-secrets-operator icon: https://phase.dev/apple-touch-icon.png keywords: @@ -41,6 +41,6 @@ entries: - https://github.com/phasehq/kubernetes-secrets-operator type: application urls: - - phase-kubernetes-operator-1.2.3.tgz - version: 1.2.3 -generated: "2025-03-25T20:38:25.105740721+05:30" + - phase-kubernetes-operator-1.2.4.tgz + version: 1.2.4 +generated: "2025-04-06T14:37:10.15293167+05:30" From 1c6fc9371739f2f25cd8c0cb7f4e23bece6e4ebe Mon Sep 17 00:00:00 2001 From: Nimish Date: Sun, 6 Apr 2025 14:50:59 +0530 Subject: [PATCH 9/9] chore: rebase --- helm-repo/index.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helm-repo/index.yaml b/helm-repo/index.yaml index 21818e0..5ebf0ba 100644 --- a/helm-repo/index.yaml +++ b/helm-repo/index.yaml @@ -4,7 +4,7 @@ entries: - apiVersion: v2 created: "2025-04-06T14:37:10.153678271+05:30" description: A Helm chart for deploying the Phase Secrets Manager - digest: d555b6b721fe9bfe639bff8803558172f9aa449a06f45bb83bcc801654256a68 + digest: 00fd9171966c7a0efad5992f5ca50d84c34203253b327e859ef6d0df9311e3f6 home: https://github.com/phasehq/kubernetes-secrets-operator icon: https://phase.dev/apple-touch-icon.png keywords: @@ -18,8 +18,8 @@ entries: - https://github.com/phasehq/console type: application urls: - - phase-0.2.1.tgz - version: 0.2.1 + - phase-0.3.0.tgz + version: 0.3.0 phase-kubernetes-operator: - apiVersion: v2 appVersion: 1.2.4