diff --git a/app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigButton.tsx b/app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigButton.tsx
index f2b20857d..393c55f9c 100644
--- a/app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigButton.tsx
+++ b/app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigButton.tsx
@@ -7,6 +7,7 @@ import { trackEvent } from '@/angulartics.matomo/analytics-services';
import { Query } from '@/react/portainer/environments/queries/useEnvironmentList';
import { Button } from '@@/buttons';
+import { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';
import { KubeconfigPrompt } from './KubeconfigPrompt';
@@ -23,23 +24,41 @@ export function KubeconfigButton({ environments, envQueryParams }: Props) {
isKubernetesEnvironment(env.Type)
);
- if (!isKubeconfigButtonVisible()) {
- return null;
+ const isHttp = window.location.protocol === 'http:';
+ const noKubeEnvs = kubeEnvs.length === 0;
+ const isDisabled = noKubeEnvs || isHttp;
+
+ let tooltipMessage = '';
+ if (isHttp) {
+ tooltipMessage =
+ 'Kubeconfig download is not available when Portainer is accessed via HTTP. Please use HTTPS';
+ } else if (noKubeEnvs) {
+ tooltipMessage = 'No Kubernetes environments detected';
}
+ const button = (
+
+ );
+
return (
<>
-
+ {isDisabled ? (
+
+ {button}
+
+ ) : (
+ button
+ )}
{prompt()}
>
);
@@ -60,10 +79,6 @@ export function KubeconfigButton({ environments, envQueryParams }: Props) {
setIsOpen(false);
}
- function isKubeconfigButtonVisible() {
- return window.location.protocol === 'https:';
- }
-
function prompt() {
return (
isOpen && (