Răsfoiți Sursa

ALB support for CAPI clusters (#3157)

Stefan McShane 2 ani în urmă
părinte
comite
c01f072467

+ 8 - 8
dashboard/package-lock.json

@@ -12,7 +12,7 @@
         "@loadable/component": "^5.15.2",
         "@material-ui/core": "^4.11.3",
         "@material-ui/lab": "^4.0.0-alpha.61",
-        "@porter-dev/api-contracts": "^0.0.63",
+        "@porter-dev/api-contracts": "^0.0.64",
         "@sentry/react": "^6.13.2",
         "@sentry/tracing": "^6.13.2",
         "@tanstack/react-query": "^4.13.0",
@@ -2430,9 +2430,9 @@
       }
     },
     "node_modules/@porter-dev/api-contracts": {
-      "version": "0.0.63",
-      "resolved": "https://registry.npmjs.org/@porter-dev/api-contracts/-/api-contracts-0.0.63.tgz",
-      "integrity": "sha512-ItrMS4ifqf/1BhbXj29pqgeTZzC0z6P7QaCppLF24sYFgoEvCUg/O6Ve0PxrpEjdNg3Dx30Qmy0gavcJODGV5g==",
+      "version": "0.0.64",
+      "resolved": "https://registry.npmjs.org/@porter-dev/api-contracts/-/api-contracts-0.0.64.tgz",
+      "integrity": "sha512-g9WW8OhBvngMDA7lSLc/7DauJzOG9jGchd2Uzml4c/toycy6etTYpoY04MK1gWuCqKYLiuS+x+x0E91MtX7xPQ==",
       "dependencies": {
         "@bufbuild/protobuf": "^1.1.0"
       }
@@ -16564,9 +16564,9 @@
       "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
     },
     "@porter-dev/api-contracts": {
-      "version": "0.0.63",
-      "resolved": "https://registry.npmjs.org/@porter-dev/api-contracts/-/api-contracts-0.0.63.tgz",
-      "integrity": "sha512-ItrMS4ifqf/1BhbXj29pqgeTZzC0z6P7QaCppLF24sYFgoEvCUg/O6Ve0PxrpEjdNg3Dx30Qmy0gavcJODGV5g==",
+      "version": "0.0.64",
+      "resolved": "https://registry.npmjs.org/@porter-dev/api-contracts/-/api-contracts-0.0.64.tgz",
+      "integrity": "sha512-g9WW8OhBvngMDA7lSLc/7DauJzOG9jGchd2Uzml4c/toycy6etTYpoY04MK1gWuCqKYLiuS+x+x0E91MtX7xPQ==",
       "requires": {
         "@bufbuild/protobuf": "^1.1.0"
       }
@@ -26737,4 +26737,4 @@
       "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw=="
     }
   }
-}
+}

+ 2 - 2
dashboard/package.json

@@ -7,7 +7,7 @@
     "@loadable/component": "^5.15.2",
     "@material-ui/core": "^4.11.3",
     "@material-ui/lab": "^4.0.0-alpha.61",
-    "@porter-dev/api-contracts": "^0.0.63",
+    "@porter-dev/api-contracts": "^0.0.64",
     "@sentry/react": "^6.13.2",
     "@sentry/tracing": "^6.13.2",
     "@tanstack/react-query": "^4.13.0",
@@ -131,4 +131,4 @@
     "webpack-cli": "^3.3.12",
     "webpack-dev-server": "^3.11.0"
   }
-}
+}

+ 19 - 9
dashboard/src/components/ProvisionerSettings.tsx

@@ -19,6 +19,8 @@ import {
   EKSNodeGroup,
   EKS,
   Cluster,
+  LoadBalancer,
+  LoadBalancerType,
 } from "@porter-dev/api-contracts";
 import { ClusterType } from "shared/types";
 import Button from "./porter/Button";
@@ -89,6 +91,7 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
   const [maxInstances, setMaxInstances] = useState(10);
   const [cidrRange, setCidrRange] = useState("10.78.0.0/16");
   const [clusterVersion, setClusterVersion] = useState("v1.24.0");
+  const [loadBalancer, setLoadBalancer] = useState<LoadBalancer | undefined>();
   const [isReadOnly, setIsReadOnly] = useState(false);
   const [errorMessage, setErrorMessage] = useState<string>(undefined);
   const [isClicked, setIsClicked] = useState(false);
@@ -131,7 +134,8 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
   };
   const createCluster = async () => {
     setIsClicked(true);
-    var data = new Contract({
+
+    let data = new Contract({
       cluster: new Cluster({
         projectId: currentProject.id,
         kind: EnumKubernetesKind.EKS,
@@ -144,6 +148,7 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
             clusterVersion: clusterVersion || "v1.24.0",
             cidrRange: cidrRange || "10.78.0.0/16",
             region: awsRegion,
+            loadBalancer: loadBalancer,
             nodeGroups: [
               new EKSNodeGroup({
                 instanceType: "t3.medium",
@@ -249,8 +254,8 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
   useEffect(() => {
     setIsReadOnly(
       props.clusterId &&
-        (currentCluster.status === "UPDATING" ||
-          currentCluster.status === "UPDATING_UNAVAILABLE")
+      (currentCluster.status === "UPDATING" ||
+        currentCluster.status === "UPDATING_UNAVAILABLE")
     );
     setClusterName(
       `${currentProject.name}-cluster-${Math.random()
@@ -262,7 +267,11 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
   useEffect(() => {
     const contract = props.selectedClusterVersion as any;
     if (contract?.cluster) {
-      contract.cluster.eksKind.nodeGroups.map((nodeGroup: any) => {
+      let eksValues: EKS = contract.cluster?.eksKind as EKS;
+      if (eksValues == null) {
+        return
+      }
+      eksValues.nodeGroups.map((nodeGroup: any) => {
         if (nodeGroup.nodeGroupType === "NODE_GROUP_TYPE_APPLICATION") {
           setMachineType(nodeGroup.instanceType);
           setMinInstances(nodeGroup.minInstances);
@@ -270,10 +279,11 @@ const ProvisionerSettings: React.FC<Props> = (props) => {
         }
       });
       setCreateStatus("");
-      setClusterName(contract.cluster.eksKind.clusterName);
-      setAwsRegion(contract.cluster.eksKind.region);
-      setClusterVersion(contract.cluster.eksKind.clusterVersion);
-      setCidrRange(contract.cluster.eksKind.cidrRange);
+      setClusterName(eksValues.clusterName);
+      setAwsRegion(eksValues.region);
+      setClusterVersion(eksValues.clusterVersion);
+      setCidrRange(eksValues.cidrRange);
+      setLoadBalancer(eksValues.loadBalancer)
     }
   }, [props.selectedClusterVersion]);
 
@@ -398,7 +408,7 @@ const ExpandHeader = styled.div<{ isExpanded: boolean }>`
     margin-right: 7px;
     margin-left: -7px;
     transform: ${(props) =>
-      props.isExpanded ? "rotate(0deg)" : "rotate(-90deg)"};
+    props.isExpanded ? "rotate(0deg)" : "rotate(-90deg)"};
   }
 `;
 

+ 1 - 1
go.mod

@@ -76,7 +76,7 @@ require (
 	github.com/honeycombio/otel-launcher-go v0.2.0
 	github.com/nats-io/nats.go v1.24.0
 	github.com/open-policy-agent/opa v0.44.0
-	github.com/porter-dev/api-contracts v0.0.63
+	github.com/porter-dev/api-contracts v0.0.64
 	github.com/riandyrn/otelchi v0.5.1
 	github.com/santhosh-tekuri/jsonschema/v5 v5.0.1
 	github.com/stefanmcshane/helm v0.0.0-20221213002717-88a4a2c6e77d

+ 2 - 0
go.sum

@@ -1490,6 +1490,8 @@ github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/polyfloyd/go-errorlint v0.0.0-20210722154253-910bb7978349/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw=
+github.com/porter-dev/api-contracts v0.0.64 h1:mMtc4lumSAEW6+o/bEGjuwQwZNNCKHk1n9aBcSb3rCw=
+github.com/porter-dev/api-contracts v0.0.64/go.mod h1:qr2L58mJLr5DUGV5OPw3REiSrQvJq6TgkKyEWP95dyU=
 github.com/porter-dev/api-contracts v0.0.63 h1:ZC2uURhfPmuknnNm9atM+7y3yW6YBCaR1vRQ9EvHCQc=
 github.com/porter-dev/api-contracts v0.0.63/go.mod h1:qr2L58mJLr5DUGV5OPw3REiSrQvJq6TgkKyEWP95dyU=
 github.com/porter-dev/switchboard v0.0.0-20221019155755-67ff2bf04935 h1:hfb3nt3AJXIBbevu6ARTg9SdOkMP6WLbKBiG5hT5rcc=